package io.muoncore.test;
/**
* @author sergio
*
*/
public class MuonTestCase {
// private OldMuon m, c;
// private String uuid;
//
// @SuppressWarnings({ "unchecked", "rawtypes" })
// @Before
// public void setUp() throws Exception {
// uuid = UUID.randomUUID().toString();
// Discovery d = new AmqpDiscovery("amqp://muon:microservices@localhost");
// AmqpTransportExtension ate = new AmqpTransportExtension("amqp://muon:microservices@localhost");
// m = new OldMuon(d);
// m.setServiceIdentifer("test-" + uuid);
// m.addTag("server");
// ate.extend(m);
// m.start();
//
// m.onCommand("/post-endpoint", Map.class,
// new MuonService.MuonCommandListener() {
// @Override
// public MuonFuture onCommand(MuonResourceEvent queryEvent) {
// System.out.println("onCommand");
//
// Map res = new HashMap();
// Map resource = (Map) queryEvent.getDecodedContent();
//
// System.out.println(resource);
//
// res.put("val", (Double) resource.get("val") + 1.0);
//
// return MuonFutures.immediately(res);
// }
// });
// m.streamSource("/stream-endpoint", Map.class,
// new MuonStreamGenerator<Map>() {
// @Override
// public Publisher<Map> generatePublisher(
// Map<String, String> parameters) {
// return new Publisher<Map>() {
// @Override
// public void subscribe(Subscriber<? super Map> s) {
// Map elem = new HashMap();
// for(double i=1.0;i<6.0;i=i+1) {
// elem.put("val", i);
// s.onNext(elem);
// }
// s.onComplete();
// }
// };
// }
// });
//
// d = new AmqpDiscovery("amqp://muon:microservices@localhost");
// ate = new AmqpTransportExtension("amqp://muon:microservices@localhost");
// c = new OldMuon(d);
// c.setServiceIdentifer("test-" + uuid + "-client");
// c.addTag("client");
// ate.extend(c);
// c.start();
//
// Thread.sleep(10000);
// }
////
//// @SuppressWarnings({ "rawtypes", "unchecked" })
//// @Test
//// public void onePost() throws InterruptedException, ExecutionException {
//// Map resource = new HashMap();
//// resource.put("val", 1.0);
////
//// MuonResourceEventBuilder mre = MuonResourceEventBuilder.event(resource);
//// mre.withUri("muon://test-" + uuid + "/post-endpoint");
//// MuonFuture mf = c.command("muon://test-" + uuid + "/post-endpoint", mre.build(), Map.class);
//// System.out.println(mf.get().getClass());
//// MuonResult result = (MuonResult) mf.get();
//// Map mResult = (Map) result.getResponseEvent().getDecodedContent();
////
//// assertEquals(mResult.get("val"), 2.0);
//// }
//
//
// @SuppressWarnings({ "rawtypes", "unchecked" })
// @Test
// public void manyPosts() throws InterruptedException, ExecutionException {
// for(int i=0;i<10;i++) {
// System.out.println("----------------------------------------------------------------------------------");
//
// Map resource = new HashMap();
// resource.put("val", 1.0);
//
// MuonResourceEventBuilder mre = MuonResourceEventBuilder.event(resource);
// mre.withUri("muon://test-" + uuid + "/post-endpoint");
// MuonFuture mf = c.command("muon://test-" + uuid + "/post-endpoint", mre.build(), Map.class);
// MuonResult result = (MuonResult) mf.get();
// if (!result.isSuccess()) {
// System.out.println("Not working");
// }
// Map mResult = (Map) result.getResponseEvent().getDecodedContent();
// System.out.println(" Return is " + mResult);
//
// assertEquals(mResult.get("val"), 2.0);
// System.out.println("===========================================================================================");
// }
// }
//
// @SuppressWarnings({ "rawtypes", "unchecked" })
// @Test
// public void streamTest() throws URISyntaxException, InterruptedException {
// BlockingQueue bq;
// Map endToken;
//
// bq = new LinkedBlockingQueue();
// endToken = new HashMap();
// endToken.put("end", "ok");
//
// c.subscribe("muon://test-" + uuid + "/stream-endpoint",
// Map.class, new Subscriber() {
// @Override
// public void onSubscribe(Subscription s) {
// System.out.println("Subscribed!");
// }
//
// @Override
// public void onNext(Object t) {
// try {
// bq.put(t);
// } catch (InterruptedException e) {
// fail(e.getMessage());
// }
// }
//
// @Override
// public void onError(Throwable t) {
// fail(t.getMessage());
// }
//
// @Override
// public void onComplete() {
// try {
// bq.put(endToken);
// } catch (InterruptedException e) {
// fail(e.getMessage());
// }
// }
// });
//
// Map elem = (Map) bq.take();
// double i = 1.0;
// while(elem.get("end") == null || !elem.get("end").equals("ok")) {
// assertEquals(elem.get("val"), i);
// i = i + 1.0;
// }
// }
}