com.cloud.gate.model.ModelTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.cloud.gate.model.ModelTestCase.java

Source

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