mirror of
https://github.com/apache/cloudstack.git
synced 2025-12-16 18:43:26 +01:00
369 lines
10 KiB
Java
369 lines
10 KiB
Java
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
package com.cloud.gate.model;
|
|
|
|
import java.util.Date;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.hibernate.Query;
|
|
import org.hibernate.Session;
|
|
import org.hibernate.Transaction;
|
|
import org.junit.Assert;
|
|
|
|
import com.cloud.bridge.model.MHost;
|
|
import com.cloud.bridge.model.MHostMount;
|
|
import com.cloud.bridge.model.SBucket;
|
|
import com.cloud.bridge.model.SHost;
|
|
import com.cloud.bridge.model.SMeta;
|
|
import com.cloud.bridge.model.SObject;
|
|
import com.cloud.bridge.util.CloudSessionFactory;
|
|
import com.cloud.bridge.util.QueryHelper;
|
|
import com.cloud.gate.testcase.BaseTestCase;
|
|
|
|
public class ModelTestCase extends BaseTestCase {
|
|
protected final static Logger logger = Logger.getLogger(ModelTestCase.class);
|
|
|
|
public void testSHost() {
|
|
SHost host;
|
|
|
|
// create the record
|
|
Session session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = new SHost();
|
|
host.setHost("localhost");
|
|
host.setExportRoot("/");
|
|
host.setUserOnHost("root");
|
|
host.setUserPassword("password");
|
|
session.saveOrUpdate(host);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
Assert.assertTrue(host.getId() != 0);
|
|
|
|
// retrive the record
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = (SHost)session.get(SHost.class, (long)host.getId());
|
|
txn.commit();
|
|
|
|
Assert.assertTrue(host.getHost().equals("localhost"));
|
|
Assert.assertTrue(host.getUserOnHost().equals("root"));
|
|
Assert.assertTrue(host.getUserPassword().equals("password"));
|
|
|
|
logger.info("Retrived record, host:" + host.getHost()
|
|
+ ", user: " + host.getUserOnHost()
|
|
+ ", password: " + host.getUserPassword());
|
|
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
// delete the record
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = (SHost)session.get(SHost.class, (long)host.getId());
|
|
session.delete(host);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = (SHost)session.get(SHost.class, (long)host.getId());
|
|
txn.commit();
|
|
|
|
Assert.assertTrue(host == null);
|
|
} finally {
|
|
session.close();
|
|
}
|
|
}
|
|
|
|
public void testSBucket() {
|
|
SHost host;
|
|
SBucket bucket;
|
|
Session session;
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = new SHost();
|
|
host.setHost("localhost");
|
|
host.setUserOnHost("root");
|
|
host.setUserPassword("password");
|
|
host.setExportRoot("/");
|
|
|
|
bucket = new SBucket();
|
|
bucket.setName("Bucket");
|
|
bucket.setOwnerCanonicalId("OwnerId-dummy");
|
|
bucket.setCreateTime(new Date());
|
|
|
|
host.getBuckets().add(bucket);
|
|
bucket.setShost(host);
|
|
|
|
session.save(host);
|
|
session.save(bucket);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
long bucketId = bucket.getId();
|
|
|
|
// load bucket
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
bucket = (SBucket)session.get(SBucket.class, bucketId);
|
|
txn.commit();
|
|
|
|
Assert.assertTrue(bucket.getShost().getHost().equals("localhost"));
|
|
Assert.assertTrue(bucket.getName().equals("Bucket"));
|
|
Assert.assertTrue(bucket.getOwnerCanonicalId().equals("OwnerId-dummy"));
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
// delete the bucket
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
bucket = (SBucket)session.get(SBucket.class, bucketId);
|
|
session.delete(bucket);
|
|
|
|
host = (SHost)session.get(SHost.class, host.getId());
|
|
session.delete(host);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
// verify the deletion
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
bucket = (SBucket)session.get(SBucket.class, bucketId);
|
|
txn.commit();
|
|
|
|
Assert.assertTrue(bucket == null);
|
|
} finally {
|
|
session.close();
|
|
}
|
|
}
|
|
|
|
public void testSObject() {
|
|
SHost host;
|
|
SBucket bucket;
|
|
Session session;
|
|
SObject sobject;
|
|
|
|
// setup
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
host = new SHost();
|
|
host.setHost("localhost");
|
|
host.setUserOnHost("root");
|
|
host.setUserPassword("password");
|
|
host.setExportRoot("/");
|
|
|
|
bucket = new SBucket();
|
|
bucket.setName("Bucket");
|
|
bucket.setOwnerCanonicalId("OwnerId-dummy");
|
|
bucket.setCreateTime(new Date());
|
|
bucket.setShost(host);
|
|
host.getBuckets().add(bucket);
|
|
|
|
sobject = new SObject();
|
|
sobject.setNameKey("ObjectNameKey");
|
|
sobject.setOwnerCanonicalId("OwnerId-dummy");
|
|
sobject.setCreateTime(new Date());
|
|
sobject.setBucket(bucket);
|
|
bucket.getObjectsInBucket().add(sobject);
|
|
|
|
session.save(host);
|
|
session.save(bucket);
|
|
session.save(sobject);
|
|
txn.commit();
|
|
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
sobject = (SObject)session.get(SObject.class, sobject.getId());
|
|
txn.commit();
|
|
Assert.assertTrue(sobject.getBucket().getName().equals("Bucket"));
|
|
Assert.assertTrue(sobject.getNameKey().equals("ObjectNameKey"));
|
|
Assert.assertTrue(sobject.getOwnerCanonicalId().equals("OwnerId-dummy"));
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
// test delete cascade
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
bucket = (SBucket)session.get(SBucket.class, bucket.getId());
|
|
session.delete(bucket);
|
|
|
|
host = (SHost)session.get(SHost.class, host.getId());
|
|
session.delete(host);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
}
|
|
|
|
public void testMeta() {
|
|
Session session;
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
SMeta meta = new SMeta();
|
|
meta.setTarget("SObject");
|
|
meta.setTargetId(1);
|
|
meta.setName("param1");
|
|
meta.setValue("value1");
|
|
session.save(meta);
|
|
|
|
logger.info("Meta 1: " + meta.getId());
|
|
|
|
meta = new SMeta();
|
|
meta.setTarget("SObject");
|
|
meta.setTargetId(1);
|
|
meta.setName("param2");
|
|
meta.setValue("value2");
|
|
session.save(meta);
|
|
|
|
logger.info("Meta 2: " + meta.getId());
|
|
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
Query query = session.createQuery("from SMeta where target=? and targetId=?");
|
|
QueryHelper.bindParameters(query, new Object[] {
|
|
"SObject", new Long(1)
|
|
});
|
|
List<SMeta> l = QueryHelper.executeQuery(query);
|
|
txn.commit();
|
|
|
|
for(SMeta meta: l) {
|
|
logger.info("" + meta.getName() + "=" + meta.getValue());
|
|
}
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
Query query = session.createQuery("delete from SMeta where target=?");
|
|
QueryHelper.bindParameters(query, new Object[] {"SObject"});
|
|
query.executeUpdate();
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
}
|
|
|
|
public void testHosts() {
|
|
Session session;
|
|
SHost shost;
|
|
MHost mhost;
|
|
MHostMount hostMount;
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
shost = new SHost();
|
|
shost.setHost("Storage host1");
|
|
shost.setUserOnHost("root");
|
|
shost.setUserPassword("password");
|
|
shost.setExportRoot("/");
|
|
session.save(shost);
|
|
|
|
mhost = new MHost();
|
|
mhost.setHostKey("1");
|
|
mhost.setHost("management host1");
|
|
mhost.setVersion("v1");
|
|
session.save(mhost);
|
|
|
|
hostMount = new MHostMount();
|
|
hostMount.setMhost(mhost);
|
|
hostMount.setShost(shost);
|
|
hostMount.setMountPath("/mnt");
|
|
session.save(hostMount);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
mhost = (MHost)session.createQuery("from MHost where hostKey=?").
|
|
setLong(0, new Long(1)).uniqueResult();
|
|
|
|
if(mhost != null) {
|
|
Iterator it = mhost.getMounts().iterator();
|
|
while(it.hasNext()) {
|
|
MHostMount mount = (MHostMount)it.next();
|
|
Assert.assertTrue(mount.getMountPath().equals("/mnt"));
|
|
|
|
logger.info(mount.getMountPath());
|
|
}
|
|
}
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
|
|
session = CloudSessionFactory.getInstance().openSession();
|
|
try {
|
|
Transaction txn = session.beginTransaction();
|
|
mhost = (MHost)session.createQuery("from MHost where hostKey=?").
|
|
setLong(0, new Long(1)).uniqueResult();
|
|
if(mhost != null)
|
|
session.delete(mhost);
|
|
|
|
shost = (SHost)session.createQuery("from SHost where host=?").
|
|
setString(0, "Storage host1").uniqueResult();
|
|
if(shost != null)
|
|
session.delete(shost);
|
|
txn.commit();
|
|
} finally {
|
|
session.close();
|
|
}
|
|
}
|
|
}
|