TEST_F(ClusterTest, testClusterListenersFromConfig) { util::CountDownLatch memberAdded(2); util::CountDownLatch memberAddedInit(3); util::CountDownLatch memberRemoved(1); util::CountDownLatch memberRemovedInit(1); util::CountDownLatch attributeLatch(7); util::CountDownLatch attributeLatchInit(7); SampleInitialListener sampleInitialListener(memberAddedInit, attributeLatchInit, memberRemovedInit); SampleListenerInClusterTest sampleListener(memberAdded, attributeLatch, memberRemoved); std::auto_ptr<ClientConfig> clientConfig(getConfig()); clientConfig->addListener(&sampleListener); clientConfig->addListener(&sampleInitialListener); HazelcastServer instance(*g_srvFactory); HazelcastClient hazelcastClient(*clientConfig); HazelcastServer instance2(*g_srvFactory); ASSERT_TRUE(attributeLatchInit.await(30)); ASSERT_TRUE(attributeLatch.await(30)); ASSERT_TRUE(memberAdded.await(30)); ASSERT_TRUE(memberAddedInit.await(30)); instance2.shutdown(); ASSERT_TRUE(memberRemoved.await(30)); ASSERT_TRUE(memberRemovedInit.await(30)); instance.shutdown(); }
TEST_F(ClusterTest, testListenersWhenClusterDown) { HazelcastServer instance(*g_srvFactory); std::auto_ptr<ClientConfig> clientConfig(getConfig()); clientConfig->setAttemptPeriod(1000 * 10).setConnectionAttemptLimit(100).setLogLevel(FINEST); HazelcastClient hazelcastClient(*clientConfig); util::CountDownLatch countDownLatch(1); DummyListenerClusterTest listener(countDownLatch); IMap<std::string, std::string> m = hazelcastClient.getMap<std::string, std::string>( "testListenersWhenClusterDown"); m.addEntryListener(listener, true); instance.shutdown(); util::CountDownLatch lifecycleLatch(1); LclForClusterTest lifecycleListener(lifecycleLatch); hazelcastClient.addLifecycleListener(&lifecycleListener); HazelcastServer instance2(*g_srvFactory); ASSERT_TRUE(lifecycleLatch.await(120)); // Let enough time for the client to re-register the failed listeners util::sleep(1); m.put("sample", "entry"); ASSERT_TRUE(countDownLatch.await(60)); ASSERT_TRUE(hazelcastClient.removeLifecycleListener(&lifecycleListener)); }
TEST_F(MemberAttributeTest, testChangeWithListeners){ util::CountDownLatch attributeLatch(7); AttributeListener sampleListener(attributeLatch); std::auto_ptr<ClientConfig> clientConfig(getConfig()); clientConfig->addListener(&sampleListener); HazelcastServer instance(*g_srvFactory); HazelcastClient hazelcastClient(*clientConfig); HazelcastServer instance2(*g_srvFactory); ASSERT_TRUE(attributeLatch.await(30)); instance2.shutdown(); instance.shutdown(); }
int main(int argc, char **argv) { /* * Instantiate a client and connect to the database. */ voltdb::ClientConfig clientConfig("program", "password"); voltdb::Client client = voltdb::Client::create(); client.createConnection("localhost"); /* * Describe the stored procedure to be invoked */ std::vector<voltdb::Parameter> parameterTypes(3); parameterTypes[0] = voltdb::Parameter(voltdb::WIRE_TYPE_STRING); parameterTypes[1] = voltdb::Parameter(voltdb::WIRE_TYPE_STRING); parameterTypes[2] = voltdb::Parameter(voltdb::WIRE_TYPE_STRING); voltdb::Procedure procedure("Insert", parameterTypes); boost::shared_ptr<CountingCallback> callback(new CountingCallback(5)); /* * Load the database. */ voltdb::ParameterSet* params = procedure.params(); params->addString("English").addString("Hello").addString("World"); client.invoke(procedure, callback); params->addString("French").addString("Bonjour").addString("Monde"); client.invoke(procedure, callback); params->addString("Spanish").addString("Hola").addString("Mundo"); client.invoke(procedure, callback); params->addString("Danish").addString("Hej").addString("Verden"); client.invoke(procedure, callback); params->addString("Italian").addString("Ciao").addString("Mondo"); client.invoke(procedure, callback); /* * Run the client event loop to poll the network and invoke callbacks. * The event loop will break on an error or when a callback returns true */ client.run(); /* * Describe procedure to retrieve message */ parameterTypes.resize( 1, voltdb::Parameter(voltdb::WIRE_TYPE_STRING)); voltdb::Procedure selectProc("Select", parameterTypes); /* * Retrieve the message */ selectProc.params()->addString("Spanish"); client.invoke(selectProc, boost::shared_ptr<PrintingCallback>(new PrintingCallback())); /* * Invoke event loop */ client.run(); return 0; }