Search in sources :

Example 11 with LPSZ

use of io.questdb.std.str.LPSZ in project questdb by bluestreak01.

the class SqlCodeGeneratorTest method testLatestByIOFailure.

@Test
public void testLatestByIOFailure() throws Exception {
    assertMemoryLeak(() -> {
        FilesFacade ff = new FilesFacadeImpl() {

            @Override
            public long openRO(LPSZ name) {
                if (Chars.endsWith(name, "b.d")) {
                    return -1;
                }
                return super.openRO(name);
            }
        };
        CairoConfiguration configuration = new DefaultCairoConfiguration(root) {

            @Override
            public FilesFacade getFilesFacade() {
                return ff;
            }
        };
        try (CairoEngine engine = new CairoEngine(configuration);
            SqlCompiler compiler = new SqlCompiler(engine)) {
            try {
                compiler.compile(("create table x as " + "(" + "select rnd_double(0)*100 a, rnd_symbol(5,4,4,1) b, timestamp_sequence(0, 100000000000) k from" + " long_sequence(200)" + ") timestamp(k) partition by DAY"), sqlExecutionContext);
                try (final RecordCursorFactory factory = compiler.compile("select * from x latest by b where b = 'PEHN' and a < 22", sqlExecutionContext).getRecordCursorFactory()) {
                    try {
                        assertCursor("a\tb\tk\n" + "5.942010834028\tPEHN\t1970-08-03T02:53:20.000000Z\n", factory, true, true, false);
                        Assert.fail();
                    } catch (CairoException e) {
                        TestUtils.assertContains(e.getFlyweightMessage(), "could not open");
                    }
                }
                Assert.assertEquals(0, engine.getBusyReaderCount());
                Assert.assertEquals(0, engine.getBusyWriterCount());
            } finally {
                engine.clear();
            }
        }
    });
}
Also used : FilesFacade(io.questdb.std.FilesFacade) RecordCursorFactory(io.questdb.cairo.sql.RecordCursorFactory) LPSZ(io.questdb.std.str.LPSZ) FilesFacadeImpl(io.questdb.std.FilesFacadeImpl) Test(org.junit.Test)

Example 12 with LPSZ

use of io.questdb.std.str.LPSZ in project questdb by bluestreak01.

the class O3FailureTest method testPartitionedDataAppendOODataIndexed.

@Test
public void testPartitionedDataAppendOODataIndexed() throws Exception {
    counter.set(3);
    executeWithoutPool(O3FailureTest::testPartitionedDataAppendOODataIndexedFailRetry0, new FilesFacadeImpl() {

        @Override
        public long openRW(LPSZ name) {
            if (Chars.endsWith(name, "1970-01-06" + Files.SEPARATOR + "timestamp.d") && counter.decrementAndGet() == 0) {
                return -1;
            }
            return super.openRW(name);
        }
    });
}
Also used : LPSZ(io.questdb.std.str.LPSZ) FilesFacadeImpl(io.questdb.std.FilesFacadeImpl) Test(org.junit.Test)

Example 13 with LPSZ

use of io.questdb.std.str.LPSZ in project questdb by bluestreak01.

the class O3FailureTest method testColumnTopMidMergeBlankFailRetryOpenRw2Contended.

@Test
public void testColumnTopMidMergeBlankFailRetryOpenRw2Contended() throws Exception {
    counter.set(3);
    executeWithPool(0, O3FailureTest::testColumnTopMidMergeBlankColumnFailRetry0, new FilesFacadeImpl() {

        @Override
        public long openRW(LPSZ name) {
            if (Chars.endsWith(name, "1970-01-06" + Files.SEPARATOR + "b.d") && counter.decrementAndGet() == 0) {
                return -1;
            }
            return super.openRW(name);
        }
    });
}
Also used : LPSZ(io.questdb.std.str.LPSZ) FilesFacadeImpl(io.questdb.std.FilesFacadeImpl) Test(org.junit.Test)

Example 14 with LPSZ

use of io.questdb.std.str.LPSZ in project questdb by bluestreak01.

the class O3FailureTest method testOOOFollowedByAnotherOOO.

@Test
public void testOOOFollowedByAnotherOOO() throws Exception {
    counter.set(1);
    final AtomicBoolean restoreDiskSpace = new AtomicBoolean(false);
    executeWithPool(0, (engine, compiler, sqlExecutionContext) -> testOooFollowedByAnotherOOO0(engine, compiler, sqlExecutionContext, restoreDiskSpace), new FilesFacadeImpl() {

        long theFd = 0;

        boolean armageddon = false;

        @Override
        public boolean close(long fd) {
            if (fd == theFd) {
                theFd = 0;
            }
            return super.close(fd);
        }

        @Override
        public long openRW(LPSZ name) {
            long fd = super.openRW(name);
            if (Chars.endsWith(name, "x" + Files.SEPARATOR + "1970-01-01.1" + Files.SEPARATOR + "m.d")) {
                if (counter.decrementAndGet() == 0) {
                    theFd = fd;
                }
            }
            return fd;
        }

        @Override
        public boolean allocate(long fd, long size) {
            if (restoreDiskSpace.get()) {
                return super.allocate(fd, size);
            }
            if (armageddon) {
                return false;
            }
            if (fd == theFd) {
                theFd = 0;
                armageddon = true;
                return false;
            }
            return super.allocate(fd, size);
        }
    });
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) LPSZ(io.questdb.std.str.LPSZ) FilesFacadeImpl(io.questdb.std.FilesFacadeImpl) Test(org.junit.Test)

Example 15 with LPSZ

use of io.questdb.std.str.LPSZ in project questdb by bluestreak01.

the class O3FailureTest method testColumnTopMidMergeBlankFailRetryMergeFixMapRWContended.

@Test
public void testColumnTopMidMergeBlankFailRetryMergeFixMapRWContended() throws Exception {
    counter.set(1);
    executeWithPool(0, O3FailureTest::testColumnTopMidMergeBlankColumnFailRetry0, new FilesFacadeImpl() {

        long theFd = 0;

        @Override
        public long mmap(long fd, long len, long offset, int flags, int memoryTag) {
            if (fd != theFd) {
                return super.mmap(fd, len, offset, flags, memoryTag);
            }
            theFd = 0;
            return -1;
        }

        @Override
        public long openRW(LPSZ name) {
            long fd = super.openRW(name);
            if (Chars.endsWith(name, "1970-01-06.14" + Files.SEPARATOR + "v8.d") && counter.decrementAndGet() == 0) {
                theFd = fd;
            }
            return fd;
        }
    });
}
Also used : LPSZ(io.questdb.std.str.LPSZ) FilesFacadeImpl(io.questdb.std.FilesFacadeImpl) Test(org.junit.Test)

Aggregations

LPSZ (io.questdb.std.str.LPSZ)50 Test (org.junit.Test)49 FilesFacadeImpl (io.questdb.std.FilesFacadeImpl)35 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)11 RecordCursor (io.questdb.cairo.sql.RecordCursor)8 Record (io.questdb.cairo.sql.Record)7 Path (io.questdb.std.str.Path)5 FilesFacade (io.questdb.std.FilesFacade)3 RecordCursorFactory (io.questdb.cairo.sql.RecordCursorFactory)1 MemoryCMARW (io.questdb.cairo.vm.api.MemoryCMARW)1 MemoryMA (io.questdb.cairo.vm.api.MemoryMA)1 TestMicroClock (io.questdb.test.tools.TestMicroClock)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1