@Test public void test() { // Bootstrap container 1 SwitchableSingletonProvider.use(1); TestContainer container1 = new TestContainer(Foo.class); container1.startContainer(); container1.ensureRequestActive(); BeanManagerImpl beanManager1 = getBeanManager(container1); Bean<?> fooBean1 = beanManager1.resolve(beanManager1.getBeans(Foo.class)); Foo foo1 = (Foo) beanManager1.getReference( fooBean1, Foo.class, beanManager1.createCreationalContext(fooBean1)); foo1.setName("container 1"); // Bootstrap container 2 SwitchableSingletonProvider.use(2); TestContainer container2 = new TestContainer(Foo.class); container2.startContainer(); container2.ensureRequestActive(); BeanManagerImpl beanManager2 = getBeanManager(container2); Bean<?> fooBean2 = beanManager2.resolve(beanManager2.getBeans(Foo.class)); Foo foo2 = (Foo) beanManager2.getReference( fooBean2, Foo.class, beanManager2.createCreationalContext(fooBean2)); foo2.setName("container 2"); // Switch to container 1 and check value SwitchableSingletonProvider.use(1); foo1 = (Foo) beanManager1.getReference( fooBean1, Foo.class, beanManager1.createCreationalContext(fooBean1)); assert foo1.getName().equals("container 1"); // Switch to container 2 and check value SwitchableSingletonProvider.use(2); foo2 = (Foo) beanManager2.getReference( fooBean2, Foo.class, beanManager2.createCreationalContext(fooBean2)); assert foo2.getName().equals("container 2"); SwitchableSingletonProvider.use(1); container1.stopContainer(); SwitchableSingletonProvider.use(2); container2.stopContainer(); SingletonProvider.reset(); }
@Test( description = "A simple test to check session replication, doesn't carefully check if a bean ids are correct") public void testSimpleSessionReplication() throws Exception { TestContainer container1 = bootstrapContainer(1, Collections.singletonList(Foo.class)); BeanManagerImpl beanManager1 = getBeanManager(container1); Bean<?> fooBean1 = beanManager1.resolve(beanManager1.getBeans(Foo.class)); TestContainer container2 = bootstrapContainer(2, Collections.singletonList(Foo.class)); BeanManagerImpl beanManager2 = getBeanManager(container2); Bean<?> fooBean2 = beanManager2.resolve(beanManager2.getBeans(Foo.class)); use(1); // Set a value into Foo1 Foo foo1 = (Foo) beanManager1.getReference( fooBean1, Foo.class, beanManager1.createCreationalContext(fooBean1)); foo1.setName("container 1"); replicateSession(1, container1, 2, container2); use(2); Foo foo2 = (Foo) beanManager2.getReference( fooBean2, Foo.class, beanManager2.createCreationalContext(fooBean2)); assert foo2.getName().equals("container 1"); use(2); container2.stopContainer(); use(1); container1.stopContainer(); }
@Test public void update_foo_success() { Response res = client.create(new Foo("Tom")); Foo foo1 = client.getDocument(res.getId(), Foo.class); foo1.setName("Jerry"); Response updateRes = client.update(res.getId(), foo1); Assert.assertEquals(res.getId(), updateRes.getId()); Assert.assertThat(updateRes.getRev(), startsWith("2-")); Foo foo2 = client.getDocument(res.getId(), Foo.class); Assert.assertEquals("Jerry", foo2.getName()); }
@Test public void getDocument_idRevForFoo_success() { Response res = client.create(new Foo("Tom")); Assert.assertThat(res.getRev(), startsWith("1-")); Foo foo = client.getDocument(res.getId(), Foo.class); foo.setName("Jerry"); Response res2 = client.create(foo); Assert.assertThat(res2.getRev(), startsWith("2-")); { Foo fooVersion2 = client.getDocument(res2.getId(), Foo.class); Assert.assertNotNull(fooVersion2); Assert.assertEquals(res2.getId(), fooVersion2.getId()); Assert.assertEquals(res2.getRev(), fooVersion2.getRevision()); } { Foo fooVersion1 = client.getDocument(res.getId(), res.getRev(), Foo.class); Assert.assertNotNull(fooVersion1); Assert.assertThat(fooVersion1.getRevision(), startsWith("1-")); } }