private void setupForVersionAndProxy(boolean proxyCacheable, UriStatus uriStatus) { List<String> reqLibs = ImmutableList.of("feature"); List<String> loadLibs = EMPTY_STRING_LIST; FeatureResource resource1 = mockResource(proxyCacheable); FeatureResource resource2 = mockResource(proxyCacheable); FeatureBundle bundle = mockBundle("feature", null, null, Lists.newArrayList(resource1, resource2)); setupJsUriAndRegistry(uriStatus, reqLibs, Lists.newArrayList(bundle), loadLibs, EMPTY_BUNDLE_LIST); expect(compiler.getJsContent(jsUri, bundle)) .andReturn(ImmutableList.<JsContent>of( JsContent.fromFeature(JS_CODE1, "source1", bundle, resource1), JsContent.fromFeature(JS_CODE2, "source2", bundle, resource2))); }
/** * Compile content in the inbound JsResponseBuilder. * TODO: Convert JsCompiler to take JsResponseBuilder directly rather than Iterable<JsContent> * @throws JsException */ public boolean process(JsRequest request, JsResponseBuilder builder) throws JsException { Iterable<JsContent> jsContents = builder.build().getAllJsContent(); for (JsContent jsc : jsContents) { FeatureBundle bundle = jsc.getFeatureBundle(); if (bundle != null) { builder.appendExterns(bundle.getApis(ApiDirective.Type.JS, true)); } } JsResponse result = compiler.compile(request.getJsUri(), jsContents, builder.build().getExterns()); builder.clearJs().appendAllJs(result.getAllJsContent()); builder.setStatusCode(result.getStatusCode()); builder.addErrors(result.getErrors()); int refresh = result.getCacheTtlSecs(); if (refresh > 0) { // Allow ttl overwrite by compiler builder.setCacheTtlSecs(refresh); } return true; }
@Test public void compilerTtlIsUsed() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1"); JsResponse outputResponse = new JsResponseBuilder().setCacheTtlSecs(789) .appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(789, compResult.getCacheTtlSecs()); }
private void setupForVersionAndProxy(boolean proxyCacheable, UriStatus uriStatus) { List<String> reqLibs = ImmutableList.of("feature"); List<String> loadLibs = EMPTY_STRING_LIST; FeatureResource resource1 = mockResource(proxyCacheable); FeatureResource resource2 = mockResource(proxyCacheable); FeatureBundle bundle = mockBundle("feature", null, null, Lists.newArrayList(resource1, resource2)); setupJsUriAndRegistry(uriStatus, reqLibs, Lists.newArrayList(bundle), loadLibs, EMPTY_BUNDLE_LIST); expect(compiler.getJsContent(jsUri, bundle)) .andReturn(ImmutableList.<JsContent>of( JsContent.fromFeature(JS_CODE1, "source1", bundle, resource1), JsContent.fromFeature(JS_CODE2, "source2", bundle, resource2))); }
@Test public void compilerTtlIsUsed() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1"); JsResponse outputResponse = new JsResponseBuilder().setCacheTtlSecs(789) .appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(789, compResult.getCacheTtlSecs()); }
@Test public void testPopulateWithLoadedFeatures() throws Exception { List<String> reqLibs = ImmutableList.of("feature1", "feature2"); List<String> loadLibs = ImmutableList.of("feature2"); FeatureResource resource1 = mockResource(true); FeatureBundle bundle1 = mockBundle("feature1", null, null, Lists.newArrayList(resource1)); FeatureBundle bundle2 = mockBundle("feature2", "export2", "extern2", null); setupJsUriAndRegistry(UriStatus.VALID_UNVERSIONED, reqLibs, ImmutableList.of(bundle1, bundle2), loadLibs, ImmutableList.of(bundle2)); expect(compiler.getJsContent(jsUri, bundle1)) .andReturn(ImmutableList.<JsContent>of( JsContent.fromFeature(JS_CODE1, "source1", null, null))); control.replay(); processor.process(request, response); checkResponse(true, GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE, JS_CODE1, "export2", "extern2"); control.verify(); }
@Test public void compilerIsRun() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1") .appendJs("content2", "source2") .appendJs(JsContent.fromFeature("content3:", "source3", mockBundle("extern3"), null)) .appendJs(JsContent.fromFeature("content4:", "source4", mockBundle("extern4"), null)); JsResponse outputResponse = new JsResponseBuilder().appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); assertTrue(status); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(1234, compResult.getCacheTtlSecs()); assertEquals("content3", compResult.toJsString()); Iterator<JsContent> outIterator = compResult.getAllJsContent().iterator(); JsContent firstOut = outIterator.next(); assertEquals("content3", firstOut.get()); assertEquals("s3", firstOut.getSource()); assertFalse(outIterator.hasNext()); }
@Test public void testPopulateWithLoadedFeatures() throws Exception { List<String> reqLibs = ImmutableList.of("feature1", "feature2"); List<String> loadLibs = ImmutableList.of("feature2"); FeatureResource resource1 = mockResource(true); FeatureBundle bundle1 = mockBundle("feature1", null, null, Lists.newArrayList(resource1)); FeatureBundle bundle2 = mockBundle("feature2", "export2", "extern2", null); setupJsUriAndRegistry(UriStatus.VALID_UNVERSIONED, reqLibs, ImmutableList.of(bundle1, bundle2), loadLibs, ImmutableList.of(bundle2)); expect(compiler.getJsContent(jsUri, bundle1)) .andReturn(ImmutableList.<JsContent>of( JsContent.fromFeature(JS_CODE1, "source1", null, null))); control.replay(); processor.process(request, response); checkResponse(true, GetJsContentProcessor.DEFAULT_UNVERSIONED_MAXAGE, JS_CODE1, "export2", "extern2"); control.verify(); }
@Test public void compilerIsRun() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1") .appendJs("content2", "source2") .appendJs(JsContent.fromFeature("content3:", "source3", mockBundle("extern3"), null)) .appendJs(JsContent.fromFeature("content4:", "source4", mockBundle("extern4"), null)); JsResponse outputResponse = new JsResponseBuilder().appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); assertTrue(status); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(1234, compResult.getCacheTtlSecs()); assertEquals("content3", compResult.toJsString()); Iterator<JsContent> outIterator = compResult.getAllJsContent().iterator(); JsContent firstOut = outIterator.next(); assertEquals("content3", firstOut.get()); assertEquals("s3", firstOut.getSource()); assertFalse(outIterator.hasNext()); }
continue; builder.appendAllJs(compiler.getJsContent(jsUri, bundle)); for (FeatureResource featureResource : bundle.getResources()) { isProxyCacheable = isProxyCacheable && featureResource.isProxyCacheable();