Package com.cloud.gate.model

Source Code of com.cloud.gate.model.ModelTestCase

// 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();
      }
    }
}
TOP

Related Classes of com.cloud.gate.model.ModelTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.