Search in sources :

Example 26 with BootstrapEnv

use of com.questdb.BootstrapEnv in project questdb by bluestreak01.

the class HttpServerTest method testConnectionCount.

@Test
public void testConnectionCount() throws Exception {
    final BootstrapEnv env = new BootstrapEnv();
    env.configuration = new ServerConfiguration(new File(resourceFile("/site"), "conf/questdb.conf"));
    env.configuration.setHttpMaxConnections(10);
    env.matcher = new SimpleUrlMatcher() {

        {
            setDefaultHandler(new StaticContentHandler(env));
        }
    };
    HttpServer server = new HttpServer(env);
    server.start();
    try {
        CloseableHttpClient c1 = clientBuilder(true).build();
        CloseableHttpClient c2 = clientBuilder(true).build();
        CloseableHttpClient c3 = clientBuilder(true).build();
        CloseableHttpClient c4 = clientBuilder(true).build();
        Assert.assertNotNull(c1.execute(new HttpGet("https://localhost:9000/upload.html")));
        Assert.assertEquals(1, server.getConnectionCount());
        Assert.assertNotNull(c2.execute(new HttpGet("https://localhost:9000/upload.html")));
        Assert.assertEquals(2, server.getConnectionCount());
        Assert.assertNotNull(c3.execute(new HttpGet("https://localhost:9000/upload.html")));
        Assert.assertEquals(3, server.getConnectionCount());
        Assert.assertNotNull(c4.execute(new HttpGet("https://localhost:9000/upload.html")));
        Assert.assertEquals(4, server.getConnectionCount());
        c1.close();
        c2.close();
        Thread.sleep(300);
        Assert.assertEquals(2, server.getConnectionCount());
        c3.close();
        c4.close();
        Thread.sleep(300);
        Assert.assertEquals(0, server.getConnectionCount());
    } finally {
        server.halt();
    }
}
Also used : CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) BootstrapEnv(com.questdb.BootstrapEnv) StaticContentHandler(com.questdb.net.http.handlers.StaticContentHandler) ServerConfiguration(com.questdb.ServerConfiguration) HttpGet(org.apache.http.client.methods.HttpGet) AbstractJournalTest(com.questdb.net.ha.AbstractJournalTest) Test(org.junit.Test)

Example 27 with BootstrapEnv

use of com.questdb.BootstrapEnv in project questdb by bluestreak01.

the class HttpServerTest method testSslConcurrentDownload.

@Test
public void testSslConcurrentDownload() throws Exception {
    BootstrapEnv env = new BootstrapEnv();
    env.configuration = new ServerConfiguration(new File(resourceFile("/site"), "conf/questdb.conf"));
    env.configuration.getSslConfig().setSecure(true);
    env.configuration.getSslConfig().setKeyStore(new FileInputStream(resourceFile("/keystore/singlekey.ks")), "changeit");
    env.matcher = new SimpleUrlMatcher() {

        {
            setDefaultHandler(new StaticContentHandler(env));
        }
    };
    final MimeTypes mimeTypes = new MimeTypes(env.configuration.getMimeTypes());
    HttpServer server = new HttpServer(env);
    server.start();
    assertConcurrentDownload(mimeTypes, server, "https");
}
Also used : BootstrapEnv(com.questdb.BootstrapEnv) StaticContentHandler(com.questdb.net.http.handlers.StaticContentHandler) ServerConfiguration(com.questdb.ServerConfiguration) AbstractJournalTest(com.questdb.net.ha.AbstractJournalTest) Test(org.junit.Test)

Example 28 with BootstrapEnv

use of com.questdb.BootstrapEnv in project questdb by bluestreak01.

the class HttpServerTest method testFragmentedUrl.

@Test
public void testFragmentedUrl() throws Exception {
    final long tick = DateFormatUtils.parseDateTime("2015-12-05T13:30:00.000Z");
    final BootstrapEnv env = new BootstrapEnv();
    env.configuration = new ServerConfiguration();
    env.matcher = new SimpleUrlMatcher();
    HttpServer server = new HttpServer(env);
    server.setClock(() -> tick);
    server.start();
    try (SocketChannel channel = openChannel()) {
        ByteBuffer buf = ByteBuffer.allocate(1024);
        ByteBuffer out = ByteBuffer.allocate(1024);
        int n = 5;
        for (int i = 0; i < n; i++) {
            buf.put((byte) request.charAt(i));
        }
        buf.flip();
        ByteBuffers.copy(buf, channel);
        buf.clear();
        for (int i = n; i < request.length(); i++) {
            buf.put((byte) request.charAt(i));
        }
        buf.flip();
        ByteBuffers.copy(buf, channel);
        channel.configureBlocking(false);
        ByteBuffers.copyGreedyNonBlocking(channel, out, 100000);
        final String expected = "HTTP/1.1 404 Not Found\r\n" + "Server: questDB/1.0\r\n" + "Date: Sat, 5 Dec 2015 13:30:00 GMT\r\n" + "Transfer-Encoding: chunked\r\n" + "Content-Type: text/html; charset=utf-8\r\n" + "\r\n" + "b\r\n" + "Not Found\r\n" + "\r\n" + "0\r\n" + "\r\n";
        Assert.assertEquals(expected.length(), out.remaining());
        for (int i = 0, k = expected.length(); i < k; i++) {
            Assert.assertEquals(expected.charAt(i), out.get());
        }
    } finally {
        server.halt();
    }
}
Also used : SocketChannel(java.nio.channels.SocketChannel) BootstrapEnv(com.questdb.BootstrapEnv) ServerConfiguration(com.questdb.ServerConfiguration) ByteBuffer(java.nio.ByteBuffer) AbstractJournalTest(com.questdb.net.ha.AbstractJournalTest) Test(org.junit.Test)

Example 29 with BootstrapEnv

use of com.questdb.BootstrapEnv in project questdb by bluestreak01.

the class HttpServerTest method testDefaultDirIndex.

@Test
public void testDefaultDirIndex() throws Exception {
    final BootstrapEnv env = new BootstrapEnv();
    env.configuration = new ServerConfiguration(new File(resourceFile("/site"), "conf/questdb.conf"));
    env.configuration.getSslConfig().setSecure(false);
    env.typeProbeCollection = TYPE_PROBE_COLLECTION;
    env.matcher = new SimpleUrlMatcher() {

        {
            setDefaultHandler(new StaticContentHandler(env));
        }
    };
    HttpServer server = new HttpServer(env);
    server.start();
    try {
        HttpTestUtils.download(clientBuilder(false), "http://localhost:9000/", new File(temp.getRoot(), "index.html"));
    } finally {
        server.halt();
    }
}
Also used : BootstrapEnv(com.questdb.BootstrapEnv) StaticContentHandler(com.questdb.net.http.handlers.StaticContentHandler) ServerConfiguration(com.questdb.ServerConfiguration) AbstractJournalTest(com.questdb.net.ha.AbstractJournalTest) Test(org.junit.Test)

Example 30 with BootstrapEnv

use of com.questdb.BootstrapEnv in project questdb by bluestreak01.

the class HttpServerTest method testImportNumberPrefixedColumn.

@Test
public void testImportNumberPrefixedColumn() throws Exception {
    final ServerConfiguration configuration = new ServerConfiguration();
    BootstrapEnv env = new BootstrapEnv();
    env.configuration = configuration;
    env.factory = getFactory();
    env.typeProbeCollection = TYPE_PROBE_COLLECTION;
    env.matcher = new SimpleUrlMatcher() {

        {
            put("/imp", new ImportHandler(env));
        }
    };
    HttpServer server = new HttpServer(env);
    server.start();
    try {
        Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-import-num-prefix.csv", "http://localhost:9000/imp?fmt=json", null, null));
        StringSink sink = new StringSink();
        RecordSourcePrinter printer = new RecordSourcePrinter(sink);
        QueryCompiler qc = new QueryCompiler(env);
        try (RecordSource rs = qc.compile(env.factory, "select count(StrSym), count(IntSym), count(_1IntCol), count(long), count() from 'test-import-num-prefix.csv'")) {
            printer.print(rs, env.factory);
        }
        TestUtils.assertEquals("126\t126\t128\t129\t129\n", sink);
    } finally {
        server.halt();
    }
}
Also used : BootstrapEnv(com.questdb.BootstrapEnv) RecordSource(com.questdb.ql.RecordSource) ServerConfiguration(com.questdb.ServerConfiguration) RecordSourcePrinter(com.questdb.ql.RecordSourcePrinter) ImportHandler(com.questdb.net.http.handlers.ImportHandler) StringSink(com.questdb.std.str.StringSink) QueryCompiler(com.questdb.parser.sql.QueryCompiler) AbstractJournalTest(com.questdb.net.ha.AbstractJournalTest) Test(org.junit.Test)

Aggregations

BootstrapEnv (com.questdb.BootstrapEnv)36 ServerConfiguration (com.questdb.ServerConfiguration)33 Test (org.junit.Test)30 AbstractJournalTest (com.questdb.net.ha.AbstractJournalTest)25 ImportHandler (com.questdb.net.http.handlers.ImportHandler)13 StringSink (com.questdb.std.str.StringSink)11 StaticContentHandler (com.questdb.net.http.handlers.StaticContentHandler)9 QueryCompiler (com.questdb.parser.sql.QueryCompiler)9 RecordSourcePrinter (com.questdb.ql.RecordSourcePrinter)9 JournalWriter (com.questdb.store.JournalWriter)4 JournalStructure (com.questdb.store.factory.configuration.JournalStructure)4 ResponseContentBufferTooSmallException (com.questdb.ex.ResponseContentBufferTooSmallException)3 AbstractOptimiserTest (com.questdb.parser.sql.AbstractOptimiserTest)3 RecordSource (com.questdb.ql.RecordSource)3 JournalEntryWriter (com.questdb.store.JournalEntryWriter)3 SocketException (java.net.SocketException)3 HttpServer (com.questdb.net.http.HttpServer)2 SimpleUrlMatcher (com.questdb.net.http.SimpleUrlMatcher)2 UploadHandler (com.questdb.net.http.handlers.UploadHandler)2 DoubleRecordSourceColumn (com.questdb.ql.ops.col.DoubleRecordSourceColumn)2