Package com.mobixess.jodb.core

Examples of com.mobixess.jodb.core.JODBSessionContainer


    public void sortingUnoptimized(boolean reopen) throws Exception{
        File testFileDir = new File(TEST_DATA_DIR);
        testFileDir.mkdirs();
        File testFile = new File(testFileDir,NQTests.class.getSimpleName()+(_testCounter++)+".jdb");
        testFile.delete();
        JODBSessionContainer sessionContainer = getContainerForFile(testFile);
       
        //sessionContainer.configureIndex(ObjectB.class, "_val4", true);
       
        Random random = new Random(237468);
        for (int i = 0; i < 1000; ++i) {
            ObjectB objectB = new ObjectB();
            objectB._val4 =  random.nextInt(1000);
            sessionContainer.set(objectB);
        }

        sessionContainer.commit();
       
        if(reopen){
            sessionContainer.close();
            sessionContainer = getContainerForFile(testFile);
        }
       
        Predicate<ObjectB> predicate = new Predicate<ObjectB>(){
            @Override
            public boolean match(ObjectB candidate) throws IOException {
                unoptimize(candidate);
                if(candidate._val4>100){
                    return true;
                }
                return false;
            }
           
            void unoptimize(ObjectB candidate){
               
            }
           
        };
        Comparator<ObjectB> comparatorForward = new Comparator<ObjectB>(){

            public int compare(ObjectB o1, ObjectB o2) {
                return o1._val4 - o2._val4;
            }
           
        };
        if(_checkOptimization && sessionContainer.isOptimizedQuery(predicate, comparatorForward)){
            throw new RuntimeException();
        }
        ObjectSet<ObjectB> result = sessionContainer.query(predicate, comparatorForward);
        if(result.size() == 0){
            throw new RuntimeException(""+result.size());
        }
        ObjectB prev = null;
        while (result.hasNext()) {
            ObjectB next = result.next();
            if(prev != null && prev._val4>next._val4){
                throw new RuntimeException();
            }
            prev = next;
        }
       
        Comparator<ObjectB> comparatorBackward = new Comparator<ObjectB>(){

            public int compare(ObjectB o1, ObjectB o2) {
                return o2._val4 - o1._val4;
            }
           
        };
       
        if(_checkOptimization && sessionContainer.isOptimizedQuery(predicate, comparatorBackward)){
            throw new RuntimeException();
        }
       
        result = sessionContainer.query(predicate, comparatorBackward);
        if(result.size() == 0){
            throw new RuntimeException(""+result.size());
        }
        prev = null;
        while (result.hasNext()) {
            ObjectB next = result.next();
            if(prev != null && prev._val4<next._val4){
                throw new RuntimeException();
            }
            prev = next;
        }
       
        sessionContainer.close();
    }
View Full Code Here


    public void sortingUnoptimizedWithIndex(boolean reopen) throws Exception{
        File testFileDir = new File(TEST_DATA_DIR);
        testFileDir.mkdirs();
        File testFile = new File(testFileDir,NQTests.class.getSimpleName()+(_testCounter++)+".jdb");
        testFile.delete();
        JODBSessionContainer sessionContainer = getContainerForFile(testFile);
       
        sessionContainer.configureIndex(ObjectB.class, "_val4", true);
       
        Random random = new Random(237468);
        for (int i = 0; i < 1000; ++i) {
            ObjectB objectB = new ObjectB();
            objectB._val4 =  random.nextInt(1000);
            sessionContainer.set(objectB);
        }

        sessionContainer.commit();
       
        if(reopen){
            sessionContainer.close();
            sessionContainer = getContainerForFile(testFile);
        }
       
        Predicate<ObjectB> predicate = new Predicate<ObjectB>(){
            @Override
            public boolean match(ObjectB candidate) throws IOException {
                unoptimize(candidate);
                if(candidate._val4>100){
                    return true;
                }
                return false;
            }
           
            void unoptimize(ObjectB candidate){
               
            }
           
        };
        Comparator<ObjectB> comparatorForward = new Comparator<ObjectB>(){

            public int compare(ObjectB o1, ObjectB o2) {
                return o1._val4 - o2._val4;
            }
           
        };
        if(_checkOptimization && sessionContainer.isOptimizedQuery(predicate, comparatorForward)){
            throw new RuntimeException();
        }
        ObjectSet<ObjectB> result = sessionContainer.query(predicate, comparatorForward);
        if(result.size() == 0){
            throw new RuntimeException(""+result.size());
        }
        ObjectB prev = null;
        while (result.hasNext()) {
            ObjectB next = result.next();
            if(prev != null && prev._val4>next._val4){
                throw new RuntimeException();
            }
            prev = next;
        }
       
        Comparator<ObjectB> comparatorBackward = new Comparator<ObjectB>(){

            public int compare(ObjectB o1, ObjectB o2) {
                return o2._val4 - o1._val4;
            }
           
        };
       
        if(_checkOptimization && sessionContainer.isOptimizedQuery(predicate, comparatorBackward)){
            throw new RuntimeException();
        }
       
        result = sessionContainer.query(predicate, comparatorBackward);
        if(result.size() == 0){
            throw new RuntimeException(""+result.size());
        }
        prev = null;
        while (result.hasNext()) {
            ObjectB next = result.next();
            if(prev != null && prev._val4<next._val4){
                throw new RuntimeException();
            }
            prev = next;
        }
       
        sessionContainer.close();
    }
View Full Code Here

       
        WriteIntersectingFactory factory = new WriteIntersectingFactory();
        JODBConfig.setRandomAccessBufferFactory(factory);
       
       
        JODBSessionContainer sessionContainer = getContainerForFile(testFile);
       
        long substTableFreeSize = sessionContainer.getDatabaseStatistics().literalSubstFreeSize(0);
        long expectedSize = substTableFreeSize;
        StringBuffer className = new StringBuffer("TestClass");
        int i=0;
        for (; className.length()<expectedSize && className.length()< 200;i++) {
            className.append("Test"+i);
        }
       
        DynamicTestClass dynamicTestClass = new DynamicTestClass(className.toString(),i*10);
        Object object = dynamicTestClass.load(sessionContainer,long.class,false);
        sessionContainer.set(object);
        sessionContainer.commit();
        sessionContainer.close();
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(dynamicTestClass._classLoader);
       
        if(sessionContainer.getDatabaseStatistics().totalDataEntries()!=2 ){
            throw new RuntimeException();
        }
       
        long firstPageSize = sessionContainer.getDatabaseStatistics().literalSubstMaxSize(0);
        long secondPageSize = sessionContainer.getDatabaseStatistics().literalSubstMaxSize(1);
        if(secondPageSize <= firstPageSize){
            throw new RuntimeException();
        }
        List list = sessionContainer.getAllObjects();
        if(list.size()!=1){
            throw new RuntimeException();
        }
        dynamicTestClass.delete();
        i++;
        className.append("Test"+i);
        dynamicTestClass = new DynamicTestClass(className.toString(),i*10);
        object = dynamicTestClass.load(sessionContainer,long.class,false);
       
        sessionContainer.set(object);
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(dynamicTestClass._classLoader);
       
        if(sessionContainer.getDatabaseStatistics().totalDataEntries() != 3 ){
            throw new RuntimeException();
        }
       
        sessionContainer.close();
        dynamicTestClass.delete();
    }
View Full Code Here

       
        WriteIntersectingFactory factory = new WriteIntersectingFactory();
        JODBConfig.setRandomAccessBufferFactory(factory);
       
       
        JODBSessionContainer sessionContainer = getContainerForFile(testFile);
       
        int dataEntries = sessionContainer.getDatabaseStatistics().totalDataEntries();
        StringBuffer className = new StringBuffer("TestClass");
        final int testIndexStart = 100;
        int testIndex = testIndexStart;
        int totalWritten = 0;
        Object object = null;
        int newTableCreationIOCalls = 0;
        while(dataEntries < 2 && className.length() < 0xFFFF){
            factory.intersectionInit(null, Integer.MAX_VALUE, false);
            factory.setIntersectEnabled(true);
            className.append("Test"+testIndex);
            DynamicTestClass dynamicTestClass = new DynamicTestClass(className.toString(),testIndex);
            object = dynamicTestClass.load(sessionContainer);
            totalWritten++;
            testIndex++;
            sessionContainer.set(object);
            sessionContainer.commit();
            newTableCreationIOCalls = factory._counter;
            if(closeAfterCommit){
                sessionContainer.close();
                sessionContainer = getContainerForFile(testFile);
                sessionContainer.setClassLoader(dynamicTestClass._classLoader);
            }
            dataEntries = sessionContainer.getDatabaseStatistics().totalDataEntries();
            dynamicTestClass.delete();
        }
        if(dataEntries!=2){
            throw new RuntimeException();
        }
        List list = sessionContainer.getAllObjects();
        if(list.size()!=totalWritten){
            throw new RuntimeException();
        }
       
        int index = list.indexOf(object);
       
        if(index == -1){
            throw new RuntimeException();
        }
       
       
        DynamicTestClass dynamicTestClass = new DynamicTestClass(className.toString(),testIndex);
        object = dynamicTestClass.load(sessionContainer);
        totalWritten++;
        testIndex++;
        sessionContainer.set(object);
        sessionContainer.commit();
        if(closeAfterCommit){
            sessionContainer.close();
            sessionContainer = getContainerForFile(testFile);
            sessionContainer.setClassLoader(dynamicTestClass._classLoader);
        }
        dataEntries = sessionContainer.getDatabaseStatistics().totalDataEntries();
        dynamicTestClass.delete();
       
        if(dataEntries!=2){
            throw new RuntimeException();
        }
        list = sessionContainer.getAllObjects();
        if(list.size()!=totalWritten){
            throw new RuntimeException();
        }
       
        index = list.indexOf(object);
       
        if(index == -1){
            throw new RuntimeException();
        }
       
        sessionContainer.close();
       
        className = new StringBuffer("TestClass");
        testIndex = testIndexStart;
        testFile = new File(testFileDir,SimpleAddTest.class.getSimpleName()+(_testCounter++)+".jdb");
        testFile.delete();
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(dynamicTestClass._classLoader);
       
        for (int i = 0 ; i < totalWritten-2; i++) {
            className.append("Test"+testIndex);
            dynamicTestClass = new DynamicTestClass(className.toString(),testIndex);
            object = dynamicTestClass.load(sessionContainer);
            testIndex++;
            sessionContainer.set(object);
            sessionContainer.commit();
            if(closeAfterCommit){
                sessionContainer.close();
                sessionContainer = getContainerForFile(testFile);
                sessionContainer.setClassLoader(dynamicTestClass._classLoader);
            }
            dataEntries = sessionContainer.getDatabaseStatistics().totalDataEntries();
            dynamicTestClass.delete();
        }
       
        if(dataEntries!=1){
            throw new RuntimeException();
        }
       
        className.append("Test"+testIndex);
        dynamicTestClass = new DynamicTestClass(className.toString(),testIndex);
        object = dynamicTestClass.load(sessionContainer);
   
       
        for (int i = 0; i < newTableCreationIOCalls; i++) {
            factory.intersectionInit(null, i, true);
   
            factory.setIntersectEnabled(true);
           
            sessionContainer.set(object);
           
            try {
                sessionContainer.commit();
                break;
            } catch (IOException e) {
                e.printStackTrace();
            }
   
           
            factory.setIntersectEnabled(false);
            if (factory._bufferedType == BUFFER_TYPE.MAIN) {
                byte[] incompleteTransaction = factory.getBuffer();
                verifyDataReadable(incompleteTransaction, null,totalWritten-2,totalWritten-1);
            }           
           
            List classes = sessionContainer.getAllObjects();
            if(classes.size()!=totalWritten-2){
                throw new RuntimeException();
            }
           
            if(sessionContainer.getDatabaseStatistics().totalDataEntries()!=1){
                throw new RuntimeException();
            }
        }
        factory.setIntersectEnabled(false);
        sessionContainer.close();
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(dynamicTestClass._classLoader);
        sessionContainer.set(object);
        sessionContainer.commit();
   
        testIndex++;
        dynamicTestClass.delete();
       
        className.append("Test"+testIndex);
        dynamicTestClass = new DynamicTestClass(className.toString(),testIndex);
        object = dynamicTestClass.load(sessionContainer);
       
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            factory.intersectionInit(null, i, true);
   
            factory.setIntersectEnabled(true);
           
            sessionContainer.set(object);
           
            try {
                sessionContainer.commit();
                break;
            } catch (Exception e) {
                e.printStackTrace();
            }
   
           
            factory.setIntersectEnabled(false);
            if (factory._bufferedType == BUFFER_TYPE.MAIN) {
                byte[] incompleteTransaction = factory.getBuffer();
                verifyDataReadable(incompleteTransaction, null,totalWritten,totalWritten+1);
            }           
           
            List classes = sessionContainer.getAllObjects();
            if(classes.size()!=totalWritten){
                throw new RuntimeException();
            }
           
            if(sessionContainer.getDatabaseStatistics().totalDataEntries()!=2){
                throw new RuntimeException();
            }
        }
        factory.setIntersectEnabled(false);
        dynamicTestClass.delete();
        sessionContainer.close();
    }
View Full Code Here

        File testFileDir = new File("./testData/");
        testFileDir.mkdirs();
        File testFile = new File(testFileDir,SimpleAddTest.class.getSimpleName()+(_testCounter++)+".jdb");
        testFile.delete();
       
        JODBSessionContainer sessionContainer = getContainerForFile(testFile);
        ClassLoader classLoaderForShortLengthObject = null;
        String className = "Test"+(_testCounter-1)+"Class";
        int i = 1;
        for (; i < Integer.MAX_VALUE; i++) {
            DynamicTestClass dynamicTestClass = new DynamicTestClass(className,i);
            Object obj = dynamicTestClass.load(sessionContainer);
            classLoaderForShortLengthObject = dynamicTestClass._classLoader;
            sessionContainer.set(obj);
            sessionContainer.commit();
            IPersistentObjectStatistics objectStatistics = sessionContainer.getPersistenceStatistics(obj);
            dynamicTestClass.delete();
            long size = objectStatistics.getBodySize();
            if(size >= 0xFF){
                break;
            }
        }
        sessionContainer.close();
       
        testFile = new File(testFileDir,SimpleAddTest.class.getSimpleName()+(_testCounter++)+".jdb");
       
        testFile.delete();
       
        sessionContainer = getContainerForFile(testFile);
       
        DynamicTestClass byteLengthDynamicTestClass = new DynamicTestClass(className,i-1);
        Object obj = byteLengthDynamicTestClass.load(sessionContainer);
        sessionContainer.set(obj);
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(classLoaderForShortLengthObject);
       
        List list = sessionContainer.getAllObjects();
        obj = list.get(0);
        sessionContainer.set(obj);
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(classLoaderForShortLengthObject);
        list = sessionContainer.getAllObjects();
        obj = list.get(0);
        IPersistentObjectStatistics objectStatistics = sessionContainer.getPersistenceStatistics(obj);
        if(objectStatistics.getTotalRecords() != 1){
            throw new RuntimeException();
        }
        modify(obj);
        sessionContainer.set(obj);
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(classLoaderForShortLengthObject);
        list = sessionContainer.getAllObjects();
        obj = list.get(0);
        objectStatistics = sessionContainer.getPersistenceStatistics(obj);
        if(objectStatistics.getTotalRecords() != 2){
            throw new RuntimeException();
        }
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(byteLengthDynamicTestClass._classLoader);
        list = sessionContainer.getAllObjects();
        obj = list.get(0);
        modify(obj);
        sessionContainer.set(obj);
        sessionContainer.close();
       
        sessionContainer = getContainerForFile(testFile);
        sessionContainer.setClassLoader(classLoaderForShortLengthObject);
        list = sessionContainer.getAllObjects();
        obj = list.get(0);
        objectStatistics = sessionContainer.getPersistenceStatistics(obj);
        if(objectStatistics.getTotalRecords() != 1){
            throw new RuntimeException(""+objectStatistics.getTotalRecords());
        }
        sessionContainer.close();
        byteLengthDynamicTestClass.delete();
        sessionContainer.close();
    }
View Full Code Here

        }
        objectDataContainer.commit();
    }
   
    private void enableIndex(ObjectContainer objectContainer) throws Exception{
        JODBSessionContainer sessionContainer = (JODBSessionContainer) objectContainer;
        sessionContainer.configureIndex(BenchmarkObject.class, "_val1", true);
    }
View Full Code Here

            throw new Exception();
        }
        JODBConfig.setNewClientPerRequest(true);
        JODBSessionContainer[] containers = getContainerForFile(testFile);
       
        JODBSessionContainer sessionContainer0 = containers[0];
        JODBSessionContainer sessionContainer1 = containers[1];
        ResolverImpl resolver0 = (ResolverImpl) sessionContainer0.getTransactionResolver();
        ResolverImpl resolver1 = (ResolverImpl) sessionContainer1.getTransactionResolver();
       
        ObjectA objectA = new ObjectA((byte)0,(short)0,null);
       
        sessionContainer0.set(objectA);
        sessionContainer0.commit();
       
        List list = sessionContainer1.getAllObjects();
        ObjectA objectA2 = (ObjectA) list.get(0);
       
        objectA.setVal2((short) 1);
        sessionContainer0.set(objectA);
        sessionContainer0.commit();
       
        if(resolver0._resolveRequests.size()!=0 || resolver1._resolveRequests.size()!=0){
            throw new RuntimeException();
        }
       
        objectA2.setVal2((short)3);
        sessionContainer1.set(objectA2);
        sessionContainer1.commit();
       
        if(resolver1._resolveRequests.size()!=1){
            throw new RuntimeException();
        }
       
View Full Code Here

    public static JODBSessionContainer[] getContainerForFile(File file) throws IOException
    {
        JODBSessionContainer[] sessionContainers = new JODBSessionContainer[2];
        JODBServer server = JODB.openServer(file);
        SessionCloseListenerImpl closeListener = new SessionCloseListenerImpl(server);
        JODBSessionContainer container = (JODBSessionContainer) JODB.openClient("//127.0.0.1",null, "rw", new ResolverImpl());
        container.addCloseListener(closeListener);
        sessionContainers[0] = container;
        container = (JODBSessionContainer) JODB.openClient("//127.0.0.1",null, "rw", new ResolverImpl());
        sessionContainers[1] = container;
        return sessionContainers;
    }
View Full Code Here

//        if(server!=null){
//            server.stop();
//        }
        _lastServer = JODB.openServer(file);
        SessionCloseListenerImpl closeListener = new SessionCloseListenerImpl(_lastServer);
        JODBSessionContainer container = (JODBSessionContainer) JODB.openClient("//127.0.0.1",null, "rw", null);
        container.addCloseListener(closeListener);
        return container;
    }
View Full Code Here

//        if(server!=null){
//            server.stop();
//        }
        _lastServer = JODB.openServer(file);
        SessionCloseListenerImpl closeListener = new SessionCloseListenerImpl(_lastServer);
        JODBSessionContainer container = (JODBSessionContainer) JODB.openClient("//127.0.0.1", null, "rw", null);
        container.addCloseListener(closeListener);
        return container;
    }
View Full Code Here

TOP

Related Classes of com.mobixess.jodb.core.JODBSessionContainer

Copyright © 2018 www.massapicom. 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.