⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 locktest.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
字号:
// You can redistribute this software and/or modify it under the terms of
// the Ozone Core License version 1 published by ozone-db.org.
//
// The original code and portions created by SMB are
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
//
// $Id$

package test.tx;

import junit.framework.*;
import org.ozoneDB.LocalDatabase;
import org.ozoneDB.core.*;
import org.ozoneDB.core.User;
import test.OzoneTestCase;


/**
 * @author <a href="http://www.softwarebuero.de/">SMB</a>
 * @version $Revision$Date$
 */
public class LockTest extends OzoneTestCase {


    public LockTest( String name ) {
        super( name );
    }

    public void testExclusiveLock() throws Exception {
        if (!(db() instanceof LocalDatabase)) {
            // only works on LocalDatabase
            return;
        }
        LocalDatabase db = (LocalDatabase)db();
        User owner = db.env.userManager.userForName( db.userName );
        Lock lock = new ExclusiveLock();
        Transaction ta1 = db.env.transactionManager.newTransaction( owner );
        assertFalse (lock.tryAcquire(ta1,Lock.LEVEL_WRITE) == Lock.NOT_ACQUIRED);
        assertFalse (lock.tryAcquire(ta1,Lock.LEVEL_READ) == Lock.NOT_ACQUIRED);

        // todo: test that the lock is exclusive
        //assertFalse (lock.tryAcquire (ta1, Lock.LEVEL_WRITE) == Lock.NOT_ACQUIRED);
        //assertTrue (lock.tryAcquire (ta2, Lock.LEVEL_WRITE) == Lock.NOT_ACQUIRED);
        //ta1.commit();
        //ta2.commit();
        //assertEquals (lock.tryAcquire (ta2, Lock.LEVEL_READ), Lock.NOT_ACQUIRED);
    }

    class TransactionThread extends Thread {
        LocalDatabase db;
        Transaction ta;
        User owner;

        TransactionThread(LocalDatabase _db, User _owner) {
            this.db = _db;
            this.owner = _owner;
        }

        public void run() {
            ta = db.env.transactionManager.newTransaction( owner );
        }

        int aquire(Lock lock, int lockLevel){
            return lock.tryAcquire (ta, lockLevel);
        }

    }

    public void testSharedLock() {
        // todo: implement me
    }


    public void testMROWLock() {
        // todo: implement me
    }


    public static Test suite() {
        TestSuite suite = new TestSuite();

        suite.addTest( new LockTest( "testExclusiveLock" ) );
        suite.addTest( new LockTest( "testSharedLock" ) );
        return suite;
    }


    public static void main( String[] args ) {
//      junit.textui.TestRunner.run( LockTest.suite() );
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -