Search in sources :

Example 6 with Engine

use of com.linkedin.parseq.Engine in project rest.li by linkedin.

the class MockHttpServerFactory method create.

/**
   * Creates a {@link HttpServer} that contains a {@link RestLiServer} to be used for testing a set of Rest.li
   * resources.
   *
   * The {@link HttpServer} uses an empty {@link FilterChain} and uses "/" as the context path.
   *
   * If the server is run in async mode (by calling this function with the last parameter {@code true}), the
   * timeout used is {@link #ASYNC_TIMEOUT}.
   *
   * Both the async and sync servers will use {@link #NUM_THREADS} threads.
   *
   * @param port the port the server will run on on localhost
   * @param config the {@link RestLiConfig} to be used by the {@link RestLiServer}
   * @param beans beans you want to inject into your Rest.li resource.
   * @param enableAsync true if the server should be async , false otherwise
   * @return
   */
private static HttpServer create(int port, RestLiConfig config, Map<String, ?> beans, boolean enableAsync) {
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(NUM_THREADS);
    final ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);
    EngineBuilder engineBuilder = new EngineBuilder().setTaskExecutor(scheduler).setTimerScheduler(scheduler);
    com.linkedin.parseq.AsyncCallableTask.register(engineBuilder, executor);
    final Engine engine = engineBuilder.build();
    ResourceFactory resourceFactory = createResourceFactory(beans);
    TransportDispatcher dispatcher = new DelegatingTransportDispatcher(new RestLiServer(config, resourceFactory, engine));
    final FilterChain fc = FilterChains.empty().addLastRest(new SimpleLoggingFilter());
    final HttpServer server = new HttpServerFactory(fc).createServer(port, HttpServerFactory.DEFAULT_CONTEXT_PATH, NUM_THREADS, dispatcher, enableAsync ? HttpJettyServer.ServletType.ASYNC_EVENT : HttpJettyServer.ServletType.RAP, enableAsync ? ASYNC_TIMEOUT : -1);
    return new HttpServer() {

        @Override
        public void start() throws IOException {
            server.start();
        }

        @Override
        public void stop() throws IOException {
            server.stop();
            engine.shutdown();
            executor.shutdown();
            scheduler.shutdown();
        }

        @Override
        public void waitForStop() throws InterruptedException {
            server.waitForStop();
        }
    };
}
Also used : HttpServerFactory(com.linkedin.r2.transport.http.server.HttpServerFactory) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) RestLiServer(com.linkedin.restli.server.RestLiServer) DelegatingTransportDispatcher(com.linkedin.restli.server.DelegatingTransportDispatcher) FilterChain(com.linkedin.r2.filter.FilterChain) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ExecutorService(java.util.concurrent.ExecutorService) HttpServer(com.linkedin.r2.transport.http.server.HttpServer) ResourceFactory(com.linkedin.restli.server.resources.ResourceFactory) InjectMockResourceFactory(com.linkedin.restli.server.mock.InjectMockResourceFactory) DelegatingTransportDispatcher(com.linkedin.restli.server.DelegatingTransportDispatcher) TransportDispatcher(com.linkedin.r2.transport.common.bridge.server.TransportDispatcher) EngineBuilder(com.linkedin.parseq.EngineBuilder) SimpleLoggingFilter(com.linkedin.r2.filter.logging.SimpleLoggingFilter) Engine(com.linkedin.parseq.Engine)

Example 7 with Engine

use of com.linkedin.parseq.Engine in project rest.li by linkedin.

the class RestLiIntTestServer method main.

public static void main(String[] args) throws IOException {
    final int numCores = Runtime.getRuntime().availableProcessors();
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(numCores + 1);
    final Engine engine = new EngineBuilder().setTaskExecutor(scheduler).setTimerScheduler(scheduler).build();
    HttpServer server = createServer(engine, DEFAULT_PORT, supportedCompression);
    server.start();
    System.out.println("HttpServer running on port " + DEFAULT_PORT + ". Press any key to stop server");
    System.in.read();
    server.stop();
    engine.shutdown();
}
Also used : ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) HttpServer(com.linkedin.r2.transport.http.server.HttpServer) EngineBuilder(com.linkedin.parseq.EngineBuilder) Engine(com.linkedin.parseq.Engine)

Example 8 with Engine

use of com.linkedin.parseq.Engine in project rest.li by linkedin.

the class TestRestLiServer method setUp.

@BeforeTest
protected void setUp() {
    // silence null engine warning and get EasyMock failure if engine is used
    Engine fakeEngine = EasyMock.createMock(Engine.class);
    _mockFilter = EasyMock.createMock(Filter.class);
    setUpServer(fakeEngine);
    setupServerWithFilters(fakeEngine);
    setupServerWithCustomErrorResponseConfig(fakeEngine);
    EasyMock.replay(fakeEngine);
}
Also used : Filter(com.linkedin.restli.server.filter.Filter) Engine(com.linkedin.parseq.Engine) BeforeTest(org.testng.annotations.BeforeTest)

Aggregations

Engine (com.linkedin.parseq.Engine)8 EngineBuilder (com.linkedin.parseq.EngineBuilder)5 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)5 RestLiServer (com.linkedin.restli.server.RestLiServer)4 Trace (com.linkedin.parseq.trace.Trace)3 RequestContext (com.linkedin.r2.message.RequestContext)3 RestRequest (com.linkedin.r2.message.rest.RestRequest)3 RestLiConfig (com.linkedin.restli.server.RestLiConfig)3 ResourceFactory (com.linkedin.restli.server.resources.ResourceFactory)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 ExecutorService (java.util.concurrent.ExecutorService)3 Test (org.testng.annotations.Test)3 RestRequestBuilder (com.linkedin.r2.message.rest.RestRequestBuilder)2 HttpServer (com.linkedin.r2.transport.http.server.HttpServer)2 IndividualRequest (com.linkedin.restli.common.multiplexer.IndividualRequest)2 URI (java.net.URI)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 Callback (com.linkedin.common.callback.Callback)1 JacksonDataCodec (com.linkedin.data.codec.JacksonDataCodec)1 StringMap (com.linkedin.data.template.StringMap)1