private <T> TStream<T> createSubscriber(DirectProvider dp, String topic, Class<T> streamType) { Topology subscriber = dp.newTopology("Sub"); return PublishSubscribe.subscribe(subscriber, topic, streamType); }
private <T> TStream<T> createPublisher(DirectProvider dp, String topic, Class<? super T> streamType, @SuppressWarnings("unchecked") T...values) { Topology publisher = dp.newTopology("Pub"); TStream<T> stream = publisher.of(values); PublishSubscribe.publish(stream, topic, streamType); return stream; }
@Test public void testStatusCode() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/status/"; TStream<Integer> rc = HttpStreams.<Integer,Integer>requests( topology.collection(Arrays.asList(200, 404, 202)), HttpClients::noAuthentication, t-> HttpGet.METHOD_NAME, t-> url + Integer.toString(t), (t,resp) -> resp.getStatusLine().getStatusCode()); Tester tester = topology.getTester(); Condition<List<Integer>> endCondition = tester.streamContents(rc, 200, 404, 202); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.valid()); }
Topology topology = ep.newTopology();
Topology topology = ep.newTopology();
@Test public void testJsonPost() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); final String url = "http://httpbin.org/post"; JsonObject body = new JsonObject(); body.addProperty("foo", getProp1()); body.addProperty("bar", getProp2()); TStream<JsonObject> stream = topology.collection(Arrays.asList(body)); TStream<JsonObject> rc = HttpStreams.postJson( stream, HttpClients::noAuthentication, t -> url, t -> t); TStream<Boolean> resStream = rc.map(j -> { assertTrue(j.has("request")); assertTrue(j.has("response")); JsonObject req = j.getAsJsonObject("request"); JsonObject res = j.getAsJsonObject("response"); assertTrue(res.has("status")); assertTrue(res.has("entity")); assertEquals(req, res.getAsJsonObject("entity").getAsJsonObject("json")); return true; }); rc.print(); Tester tester = topology.getTester(); Condition<List<Boolean>> endCondition = tester.streamContents(resStream, true); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.getResult().toString(), endCondition.valid()); }
Topology topology = ep.newTopology();
@Test public void testPost() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/post"; TStream<String> stream = topology.strings(url); TStream<String> rc = HttpStreams.<String, String>requestsWithBody( stream, HttpClients::noAuthentication, t -> HttpPost.METHOD_NAME, t-> t, t-> new ByteArrayEntity(t.getBytes()), HttpResponders.inputOn200()); Tester tester = topology.getTester(); Condition<List<String>> endCondition = tester.streamContents(rc, url); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.valid()); }
@Test public void testPut() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/put"; TStream<String> stream = topology.strings(url); TStream<String> rc = HttpStreams.<String, String>requestsWithBody( stream, HttpClients::noAuthentication, t -> HttpPut.METHOD_NAME, t-> t, t-> new ByteArrayEntity(t.getBytes()), HttpResponders.inputOn200()); Tester tester = topology.getTester(); Condition<List<String>> endCondition = tester.streamContents(rc, url); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.valid()); }
/** * Test basic authentication, first with valid user/password * and then with invalid (results in 401). * @throws Exception on failure */ @Test public void testBasicAuthentication() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/basic-auth/"; TStream<Integer> rc = HttpStreams.<String,Integer>requests( topology.strings("A", "B"), () -> HttpClients.basic("usA", "pwdA4"), t-> HttpGet.METHOD_NAME, t-> url + "us" + t + "/pwd" + t + "4", (t,resp) -> resp.getStatusLine().getStatusCode()); Tester tester = topology.getTester(); Condition<List<Integer>> endCondition = tester.streamContents(rc, 200, 401); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.getResult().toString(), endCondition.valid()); }
@Test public void testDelete() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/delete"; TStream<String> stream = topology.strings(url); TStream<String> rc = HttpStreams.<String, String>requests( stream, HttpClients::noAuthentication, t -> HttpDelete.METHOD_NAME, t-> t, HttpResponders.inputOn200()); Tester tester = topology.getTester(); Condition<List<String>> endCondition = tester.streamContents(rc, url); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.valid()); }
@Test public void testGet() throws Exception { DirectProvider ep = new DirectProvider(); Topology topology = ep.newTopology(); String url = "http://httpbin.org/get"; TStream<String> rc = HttpStreams.<String,String>requests( topology.strings(url), HttpClients::noAuthentication, t-> HttpGet.METHOD_NAME, t->t, HttpResponders.inputOn200()); Tester tester = topology.getTester(); Condition<List<String>> endCondition = tester.streamContents(rc, url); tester.complete(ep, new JsonObject(), endCondition, 10, TimeUnit.SECONDS); assertTrue(endCondition.valid()); }
Topology iot = dp.newTopology("IotPubSub"); IotDevicePubSub.createApplication(new EchoIotDevice(iot)); Topology app1 = dp.newTopology("App1");