executor.execute(gadget.getContext(), pipelineNodes.keySet());
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); rewriter = new PipelineDataGadgetRewriter(new PipelineExecutor(preloader, preloaderService, Expressions.forTesting())); }
executor.execute(gadget.getContext(), pipelineNodes.keySet());
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); rewriter = new PipelineDataGadgetRewriter(new PipelineExecutor(preloader, preloaderService, Expressions.forTesting())); }
executor.execute(gadget.getContext(), pipelineNodes.keySet());
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); rewriter = new PipelineDataGadgetRewriter(new PipelineExecutor(preloader, preloaderService, Expressions.forTesting())); }
/** * Creates a proxy request by fetching pipelined data and adding it to an existing request. * */ protected HttpRequest createPipelinedProxyRequest(Gadget gadget, HttpRequest original) { HttpRequest request = new HttpRequest(original); request.setIgnoreCache(true); PipelinedData data = gadget.getCurrentView().getPipelinedData(); if (data != null) { PipelineExecutor.Results results = pipelineExecutor.execute(gadget.getContext(), ImmutableList.of(data)); if (results != null && !results.results.isEmpty()) { String postContent = JsonSerializer.serialize(results.results); // POST the preloaded content, with a method override of GET // to enable caching request.setMethod("POST") .setPostBody(CharsetUtil.getUtf8Bytes(postContent)) .setHeader("Content-Type", "application/json;charset=utf-8"); } } return request; }
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); executor = new PipelineExecutor(preloader, preloaderService, Expressions.forTesting()); context = new GadgetContext(){}; }
/** * Creates a proxy request by fetching pipelined data and adding it to an existing request. * */ private HttpRequest createPipelinedProxyRequest(Gadget gadget, HttpRequest original) { HttpRequest request = new HttpRequest(original); request.setIgnoreCache(true); PipelinedData data = gadget.getCurrentView().getPipelinedData(); if (data != null) { PipelineExecutor.Results results = pipelineExecutor.execute(gadget.getContext(), ImmutableList.of(data)); if (results != null && !results.results.isEmpty()) { String postContent = JsonSerializer.serialize(results.results); // POST the preloaded content, with a method override of GET // to enable caching request.setMethod("POST") .setPostBody(CharsetUtil.getUtf8Bytes(postContent)) .setHeader("Content-Type", "application/json;charset=utf-8"); } } return request; }
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); executor = new PipelineExecutor(preloader, preloaderService, Expressions.forTesting()); context = new GadgetContext(){}; }
@Test public void executeWithBlockedBatch() throws Exception { PipelinedData pipeline = getPipelinedData(BLOCKED_FIRST_BATCH_CONTENT); // Expect a batch with no content expect( preloader.createPreloadTasks(same(context), eqBatch(0, 0))) .andReturn(ImmutableList.<Callable<PreloadedData>>of()); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertEquals(1, results.remainingPipelines.size()); assertSame(pipeline, results.remainingPipelines.iterator().next()); control.verify(); }
@Before public void setUp() throws Exception { control = EasyMock.createStrictControl(); preloader = control.createMock(PipelinedDataPreloader.class); preloaderService = new ConcurrentPreloaderService(Executors.newSingleThreadExecutor(), null); executor = new PipelineExecutor(preloader, preloaderService, Expressions.forTesting()); context = new GadgetContext(){}; }
/** * Creates a proxy request by fetching pipelined data and adding it to an existing request. * */ private HttpRequest createPipelinedProxyRequest(Gadget gadget, HttpRequest original) { HttpRequest request = new HttpRequest(original); request.setIgnoreCache(true); PipelinedData data = gadget.getCurrentView().getPipelinedData(); if (data != null) { PipelineExecutor.Results results = pipelineExecutor.execute(gadget.getContext(), ImmutableList.of(data)); if (results != null && !results.results.isEmpty()) { String postContent = JsonSerializer.serialize(results.results); // POST the preloaded content, with a method override of GET // to enable caching request.setMethod("POST") .setPostBody(CharsetUtil.getUtf8Bytes(postContent)) .setHeader("Content-Type", "application/json;charset=utf-8"); } } return request; }
@Test public void executeWithBlockedBatch() throws Exception { PipelinedData pipeline = getPipelinedData(BLOCKED_FIRST_BATCH_CONTENT); // Expect a batch with no content expect( preloader.createPreloadTasks(same(context), eqBatch(0, 0))) .andReturn(ImmutableList.<Callable<PreloadedData>>of()); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertEquals(1, results.remainingPipelines.size()); assertSame(pipeline, results.remainingPipelines.iterator().next()); control.verify(); }
@Test public void executeWithBlockedBatch() throws Exception { PipelinedData pipeline = getPipelinedData(BLOCKED_FIRST_BATCH_CONTENT); // Expect a batch with no content expect( preloader.createPreloadTasks(same(context), eqBatch(0, 0))) .andReturn(ImmutableList.<Callable<PreloadedData>>of()); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertEquals(1, results.remainingPipelines.size()); assertSame(pipeline, results.remainingPipelines.iterator().next()); control.verify(); }
@Test public void executePreloadException() throws Exception { PipelinedData pipeline = getPipelinedData(CONTENT); final PreloadedData willThrow = control.createMock(PreloadedData.class); Callable<PreloadedData> callable = new Callable<PreloadedData>() { public PreloadedData call() throws Exception { return willThrow; } }; // One batch expect(preloader.createPreloadTasks(same(context), isA(PipelinedData.Batch.class))).andReturn(ImmutableList.of(callable)); // And PreloadedData that throws an exception expect(willThrow.toJson()).andThrow(new PreloadException("Failed")); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); // The exception is fully handled, and leads to empty results assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertTrue(results.remainingPipelines.isEmpty()); control.verify(); }
@Test public void executePreloadException() throws Exception { PipelinedData pipeline = getPipelinedData(CONTENT); final PreloadedData willThrow = control.createMock(PreloadedData.class); Callable<PreloadedData> callable = new Callable<PreloadedData>() { public PreloadedData call() throws Exception { return willThrow; } }; // One batch expect(preloader.createPreloadTasks(same(context), isA(PipelinedData.Batch.class))).andReturn(ImmutableList.of(callable)); // And PreloadedData that throws an exception expect(willThrow.toJson()).andThrow(new PreloadException("Failed")); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); // The exception is fully handled, and leads to empty results assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertTrue(results.remainingPipelines.isEmpty()); control.verify(); }
@Test public void executePreloadException() throws Exception { PipelinedData pipeline = getPipelinedData(CONTENT); final PreloadedData willThrow = control.createMock(PreloadedData.class); Callable<PreloadedData> callable = new Callable<PreloadedData>() { public PreloadedData call() throws Exception { return willThrow; } }; // One batch expect(preloader.createPreloadTasks(same(context), isA(PipelinedData.Batch.class))).andReturn(ImmutableList.of(callable)); // And PreloadedData that throws an exception expect(willThrow.toJson()).andThrow(new PreloadException("Failed")); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); // The exception is fully handled, and leads to empty results assertEquals(0, results.results.size()); assertTrue(results.keyedResults.isEmpty()); assertTrue(results.remainingPipelines.isEmpty()); control.verify(); }
@Test public void execute() throws Exception { PipelinedData pipeline = getPipelinedData(CONTENT); Capture<PipelinedData.Batch> batchCapture = new Capture<PipelinedData.Batch>(); JSONObject expectedData = new JSONObject("{result: {foo: 'bar'}}"); // Dummy return results (the "real" return would have two values) Callable<PreloadedData> callable = createPreloadTask("key", expectedData.toString()); // One batch with 1 each HTTP and Social preload expect(preloader.createPreloadTasks(same(context), and(eqBatch(1, 1), capture(batchCapture)))) .andReturn(ImmutableList.of(callable)); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); // Verify the data set is injected, and the os-data was deleted assertTrue(batchCapture.getValue().getPreloads().containsKey("me")); assertTrue(batchCapture.getValue().getPreloads().containsKey("json")); JsonAssert.assertJsonEquals("[{id: 'key', result: {foo: 'bar'}}]", JsonSerializer.serialize(results.results)); JsonAssert.assertJsonEquals("{foo: 'bar'}", JsonSerializer.serialize(results.keyedResults.get("key"))); assertTrue(results.remainingPipelines.isEmpty()); control.verify(); }
@Test public void executeError() throws Exception { PipelinedData pipeline = getPipelinedData(CONTENT); Capture<PipelinedData.Batch> batchCapture = new Capture<PipelinedData.Batch>(); JSONObject expectedData = new JSONObject("{error: {message: 'NO!', code: 500}}"); // Dummy return results (the "real" return would have two values) Callable<PreloadedData> callable = createPreloadTask("key", expectedData.toString()); // One batch with 1 each HTTP and Social preload expect(preloader.createPreloadTasks(same(context), and(eqBatch(1, 1), capture(batchCapture)))) .andReturn(ImmutableList.of(callable)); control.replay(); PipelineExecutor.Results results = executor.execute(context, ImmutableList.of(pipeline)); // Verify the data set is injected, and the os-data was deleted assertTrue(batchCapture.getValue().getPreloads().containsKey("me")); assertTrue(batchCapture.getValue().getPreloads().containsKey("json")); JsonAssert.assertJsonEquals("[{id: 'key', error: {message: 'NO!', code: 500}}]", JsonSerializer.serialize(results.results)); JsonAssert.assertJsonEquals("{message: 'NO!', code: 500}", JsonSerializer.serialize(results.keyedResults.get("key"))); assertTrue(results.remainingPipelines.isEmpty()); control.verify(); }