public static void main(String[] args) { Vertx vertx = Vertx.vertx(); ApplicationContext context = new AnnotationConfigApplicationContext(ExampleApplication.class); VerticleFactory verticleFactory = context.getBean(SpringVerticleFactory.class); // The verticle factory is registered manually because it is created by the Spring container vertx.registerVerticleFactory(verticleFactory); // Scale the verticles on cores: create 4 instances during the deployment DeploymentOptions options = new DeploymentOptions().setInstances(4); vertx.deployVerticle(verticleFactory.prefix() + ":" + GreetingVerticle.class.getName(), options); }
@Test public void testRegisterTwice() { VerticleFactory fact1 = new TestVerticleFactory("foo"); vertx.registerVerticleFactory(fact1); try { vertx.registerVerticleFactory(fact1); fail("Should throw exception"); } catch (IllegalArgumentException e) { // OK } }
@Test public void testRegister() { assertTrue(vertx.verticleFactories().isEmpty()); VerticleFactory fact1 = new TestVerticleFactory("foo"); vertx.registerVerticleFactory(fact1); assertEquals(1, vertx.verticleFactories().size()); assertTrue(vertx.verticleFactories().contains(fact1)); }
@Test public void testOrderingFailedInCreate() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory fact2 = new TestVerticleFactory("aa", verticle, 2); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle, 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", verticle, 3); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:someverticle", res -> { assertTrue(res.succeeded()); assertEquals("aa:someverticle", fact2.identifier); assertNull(fact1.identifier); assertNull(fact3.identifier); testComplete(); }); await(); }
vertx.registerVerticleFactory(fact);
@Test public void testOrderingFailedInCreateAll() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory fact2 = new TestVerticleFactory("aa", verticle, 2, true); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle, 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", verticle, 3, true); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:someverticle", res -> { assertFalse(res.succeeded()); assertTrue(res.cause() instanceof ClassNotFoundException); assertNull(fact1.identifier); assertNull(fact2.identifier); assertNull(fact3.identifier); testComplete(); }); await(); }
@Test public void testOrderingFailedInCreate2() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory fact2 = new TestVerticleFactory("aa", verticle, 2, true); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle, 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", verticle, 3); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:someverticle", res -> { assertTrue(res.succeeded()); assertEquals("aa:someverticle", fact3.identifier); assertNull(fact1.identifier); assertNull(fact2.identifier); testComplete(); }); await(); }
@Test public void testOrdering() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory fact2 = new TestVerticleFactory("aa", verticle, 2); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle, 1); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", verticle, 3); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:someverticle", res -> { assertTrue(res.succeeded()); assertEquals("aa:someverticle", fact1.identifier); assertNull(fact2.identifier); assertNull(fact3.identifier); testComplete(); }); await(); }
@Test public void testBlockingCreateFailureInCreate() { TestVerticle verticle1 = new TestVerticle(); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle1); fact1.blockingCreate = true; fact1.failInCreate = true; vertx.registerVerticleFactory(fact1); String name1 = "aa:myverticle1"; vertx.deployVerticle(name1, new DeploymentOptions(), ar -> { assertFalse(ar.succeeded()); testComplete(); }); await(); }
@Test public void testUnregister() { VerticleFactory fact1 = new TestVerticleFactory("foo"); vertx.registerVerticleFactory(fact1); assertEquals(1, vertx.verticleFactories().size()); assertTrue(vertx.verticleFactories().contains(fact1)); vertx.unregisterVerticleFactory(fact1); assertFalse(vertx.verticleFactories().contains(fact1)); assertTrue(vertx.verticleFactories().isEmpty()); }
@Test public void testOrderingFailedInResolve2() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory factActual = new TestVerticleFactory("actual", verticle); vertx.registerVerticleFactory(factActual); TestVerticleFactory fact2 = new TestVerticleFactory("aa", "actual:someverticle", 2, true); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", "actual:someverticle", 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", "actual:someverticle", 3); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:blah", res -> { assertTrue(res.succeeded()); assertNull(fact2.identifier); assertNull(fact1.identifier); assertNull(fact3.identifier); assertEquals("aa:blah", fact3.identifierToResolve); assertNull(fact1.identifierToResolve); assertNull(fact2.identifierToResolve); assertEquals("actual:someverticle", factActual.identifier); testComplete(); }); await(); }
@Test public void testUnregisterTwice() { VerticleFactory fact1 = new TestVerticleFactory("foo"); vertx.registerVerticleFactory(fact1); vertx.unregisterVerticleFactory(fact1); try { vertx.unregisterVerticleFactory(fact1); fail("Should throw exception"); } catch (IllegalArgumentException e) { // OK } }
@Test public void testOrderingFailedInResolve() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory factActual = new TestVerticleFactory("actual", verticle); vertx.registerVerticleFactory(factActual); TestVerticleFactory fact2 = new TestVerticleFactory("aa", "actual:someverticle", 2); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", "actual:someverticle", 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", "actual:someverticle", 3); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:blah", res -> { assertTrue(res.succeeded()); assertNull(fact2.identifier); assertNull(fact1.identifier); assertNull(fact3.identifier); assertEquals("aa:blah", fact2.identifierToResolve); assertNull(fact1.identifierToResolve); assertNull(fact3.identifierToResolve); assertEquals("actual:someverticle", factActual.identifier); testComplete(); }); await(); }
@Test public void testOrderingAllFailedInResolve() { TestVerticle verticle = new TestVerticle(); TestVerticleFactory factActual = new TestVerticleFactory("actual", verticle); vertx.registerVerticleFactory(factActual); TestVerticleFactory fact2 = new TestVerticleFactory("aa", "actual:someverticle", 2, true); vertx.registerVerticleFactory(fact2); TestVerticleFactory fact1 = new TestVerticleFactory("aa", "actual:someverticle", 1, true); vertx.registerVerticleFactory(fact1); TestVerticleFactory fact3 = new TestVerticleFactory("aa", "actual:someverticle", 3, true); vertx.registerVerticleFactory(fact3); vertx.deployVerticle("aa:blah", res -> { assertTrue(res.failed()); assertTrue(res.cause() instanceof IOException); assertNull(fact2.identifier); assertNull(fact1.identifier); assertNull(fact3.identifier); assertNull(fact3.identifierToResolve); assertNull(fact1.identifierToResolve); assertNull(fact2.identifierToResolve); assertNull(factActual.identifier); testComplete(); }); await(); }
@Test public void testNoMatch() { TestVerticle verticle1 = new TestVerticle(); TestVerticle verticle2 = new TestVerticle(); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle1); TestVerticleFactory fact2 = new TestVerticleFactory("bb", verticle2); vertx.registerVerticleFactory(fact1); vertx.registerVerticleFactory(fact2); String name1 = "cc:myverticle1"; // If no match it will default to the simple Java verticle factory and then fail with ClassNotFoundException vertx.deployVerticle(name1, new DeploymentOptions(), ar -> { assertFalse(ar.succeeded()); assertFalse(verticle1.startCalled); assertFalse(verticle2.startCalled); assertTrue(ar.cause() instanceof ClassNotFoundException); testComplete(); }); await(); }
@Test public void testRegisterUnregisterTwo() { VerticleFactory fact1 = new TestVerticleFactory("foo"); VerticleFactory fact2 = new TestVerticleFactory("bar"); vertx.registerVerticleFactory(fact1); assertEquals(1, vertx.verticleFactories().size()); vertx.registerVerticleFactory(fact2); assertEquals(2, vertx.verticleFactories().size()); assertTrue(vertx.verticleFactories().contains(fact1)); assertTrue(vertx.verticleFactories().contains(fact2)); vertx.unregisterVerticleFactory(fact1); assertFalse(vertx.verticleFactories().contains(fact1)); assertEquals(1, vertx.verticleFactories().size()); assertTrue(vertx.verticleFactories().contains(fact2)); vertx.unregisterVerticleFactory(fact2); assertTrue(vertx.verticleFactories().isEmpty()); assertFalse(vertx.verticleFactories().contains(fact1)); assertFalse(vertx.verticleFactories().contains(fact2)); }
@Test public void testNotBlockingCreate() { TestVerticle verticle1 = new TestVerticle(); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle1); vertx.registerVerticleFactory(fact1); String name1 = "aa:myverticle1"; vertx.deployVerticle(name1, new DeploymentOptions(), ar -> { assertTrue(ar.succeeded()); assertEquals(name1, fact1.identifier); assertFalse(fact1.blockingCreate); assertFalse(fact1.createWorkerThread); testComplete(); }); await(); }
@Test public void testBlockingCreate() { TestVerticle verticle1 = new TestVerticle(); TestVerticleFactory fact1 = new TestVerticleFactory("aa", verticle1); fact1.blockingCreate = true; vertx.registerVerticleFactory(fact1); String name1 = "aa:myverticle1"; vertx.deployVerticle(name1, new DeploymentOptions(), ar -> { assertTrue(ar.succeeded()); assertEquals(name1, fact1.identifier); assertTrue(fact1.blockingCreate); assertTrue(fact1.createWorkerThread); assertTrue(fact1.createContext.isEventLoopContext()); testComplete(); }); await(); }
TestVerticleFactory fact2 = new TestVerticleFactory("bb", verticle2); TestVerticleFactory fact3 = new TestVerticleFactory("cc", verticle3); vertx.registerVerticleFactory(fact1); vertx.registerVerticleFactory(fact2); vertx.registerVerticleFactory(fact3); String name1 = "myverticle1.aa"; String name2 = "myverticle2.bb";
vertx.registerVerticleFactory(fact); TestVerticleFactory factResolve = new TestVerticleFactory("resolve", "actual:myverticle", "othergroup"); vertx.registerVerticleFactory(factResolve); JsonObject config = new JsonObject().put("foo", "bar"); DeploymentOptions original = new DeploymentOptions().setWorker(false).setConfig(config).setIsolationGroup("somegroup");