/* * Copyright (C) 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.bus.client.tests; import java.util.Collections; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import org.jboss.errai.bus.client.ErraiBus; import org.jboss.errai.bus.client.api.ClientMessageBus; import org.jboss.errai.bus.client.api.base.MessageBuilder; import org.jboss.errai.bus.client.api.messaging.Message; import org.jboss.errai.bus.client.api.messaging.MessageCallback; import org.jboss.errai.bus.client.tests.support.SlowService; import org.jboss.errai.bus.common.AbstractErraiTest; import com.google.gwt.user.client.Timer; /** * @author Mike Brock */ public class BusRenegotiationTests extends AbstractErraiTest { @Override public String getModuleName() { return "org.jboss.errai.bus.ErraiBusTests"; } public void testBusRecoversFromSessionExpiry() { runAfterInit(new Runnable() { @Override public void run() { logger.info("Starting testBusRecoversFromSessionExpiry runnable..."); MessageBuilder.createMessage() .toSubject("ExpiryService") .signalling().noErrorHandling().sendNowWith(ErraiBus.get()); new Timer() { @Override public void run() { logger.info("Running testBusRecoversFromSessionExpiry timer..."); MessageBuilder.createMessage() .toSubject("TestService3") .signalling().noErrorHandling().repliesTo( new MessageCallback() { @Override public void callback(final Message message) { finishTest(); } } ).sendNowWith(ErraiBus.get()); } }.schedule(500); } }); } public void testRpcResponseSubjectsNotAdvertisedAfterReconnection() throws Exception { runAfterInit(new Runnable() { @Override public void run() { logger.info("Calling slow service..."); MessageBuilder.createCall( (final Long retVal) -> fail( "RemoteCallback invoked. Likely the assertion that caused the failure was swallowed. See logs for details."), (m, e) -> { fail("ErrorCallback invoked"); return false; }, SlowService.class).sleep(10000); final ClientMessageBus bus = (ClientMessageBus) ErraiBus.get(); logger.info("Stopping bus in test..."); bus.stop(false); logger.info("Reinitializing bus in test..."); bus.init(); logger.info("Running assertions in test..."); final Set<String> allSubjects = bus.getAllRegisteredSubjects(); final List<String> rpcResponseSubjects = allSubjects.stream() .filter(s -> s.endsWith(":RPC")).collect(Collectors.toList()); try { assertEquals(Collections.emptyList(), rpcResponseSubjects); } catch (final AssertionError ae) { logger.info("Test failed.", ae); throw ae; } logger.info("Test completed"); finishTest(); } }); } }