public int getPort() { return rcv.getPort(); }
public boolean isRunning() { return rcv.isRunning(); }
public void start() throws Exception { try { rcv.start(); } catch (Exception e) { throw new Exception(e.getMessage()); } }
try { if (generateDefaults() || receiver.getHostnameForSenders() != null) atts.addAttribute("", "", HOSTNAME_FOR_SENDERS, "", receiver.getHostnameForSenders()); if (generateDefaults() || receiver.getStartPort() != GatewayReceiver.DEFAULT_START_PORT) atts.addAttribute("", "", START_PORT, "", String.valueOf(receiver.getStartPort())); if (generateDefaults() || receiver.getEndPort() != GatewayReceiver.DEFAULT_END_PORT) atts.addAttribute("", "", END_PORT, "", String.valueOf(receiver.getEndPort())); if (generateDefaults() || (receiver.getBindAddress() != null && !receiver.getBindAddress().equals(GatewayReceiver.DEFAULT_BIND_ADDRESS))) atts.addAttribute("", "", BIND_ADDRESS, "", receiver.getBindAddress()); .getMaximumTimeBetweenPings() != GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS) atts.addAttribute("", "", MAXIMUM_TIME_BETWEEN_PINGS, "", String.valueOf(receiver.getMaximumTimeBetweenPings())); || receiver.getSocketBufferSize() != GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE) atts.addAttribute("", "", SOCKET_BUFFER_SIZE, "", String.valueOf(receiver.getSocketBufferSize())); if (generateDefaults() || receiver.isManualStart() != GatewayReceiver.DEFAULT_MANUAL_START) atts.addAttribute("", "", MANUAL_START, "", String.valueOf(receiver.isManualStart())); for (GatewayTransportFilter gsf : receiver.getGatewayTransportFilters()) { generateGatewayTransportFilter(gsf);
when(mockGatewayReceiver.isManualStart()).thenAnswer(newGetter(manualStart)); when(mockGatewayReceiver.isRunning()).thenAnswer(newGetter(running)); when(mockGatewayReceiver.getBindAddress()).thenAnswer(newGetter(bindAddress)); when(mockGatewayReceiver.getEndPort()).thenAnswer(newGetter(endPort)); when(mockGatewayReceiver.getGatewayTransportFilters()).thenReturn(gatewayTransportFilters); when(mockGatewayReceiver.getHost()).thenAnswer(newGetter(hostnameForSenders)); when(mockGatewayReceiver.getMaximumTimeBetweenPings()).thenAnswer(newGetter(maximumTimeBetweenPings)); when(mockGatewayReceiver.getPort()).thenReturn(0); when(mockGatewayReceiver.getSocketBufferSize()).thenAnswer(newGetter(socketBufferSize)); when(mockGatewayReceiver.getStartPort()).thenAnswer(newGetter(startPort)); doAnswer(newSetter(running, true, null)).when(mockGatewayReceiver).start(); doAnswer(newSetter(running, false, null)).when(mockGatewayReceiver).stop();
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { if (getGemFireCache().filter(CacheUtils::isPeer).isPresent()) { AtomicInteger globalIndex = new AtomicInteger(0); Set<GatewayReceiver> gatewayReceivers = getGemFireCache() .map(Cache.class::cast) .map(Cache::getGatewayReceivers) .orElseGet(Collections::emptySet); builder.withDetail("geode.gateway-receiver.count", gatewayReceivers.size()); gatewayReceivers.stream() .filter(Objects::nonNull) .forEach(gatewayReceiver -> { int index = globalIndex.getAndIncrement(); builder.withDetail(gatewayReceiverKey(index, "bind-address"), gatewayReceiver.getBindAddress()) .withDetail(gatewayReceiverKey(index, "end-port"), gatewayReceiver.getEndPort()) .withDetail(gatewayReceiverKey(index, "host"), gatewayReceiver.getHost()) .withDetail(gatewayReceiverKey(index, "max-time-between-pings"), gatewayReceiver.getMaximumTimeBetweenPings()) .withDetail(gatewayReceiverKey(index, "port"), gatewayReceiver.getPort()) .withDetail(gatewayReceiverKey(index, "running"), toYesNoString(gatewayReceiver.isRunning())) .withDetail(gatewayReceiverKey(index, "socket-buffer-size"), gatewayReceiver.getSocketBufferSize()) .withDetail(gatewayReceiverKey(index, "start-port"), gatewayReceiver.getStartPort()); }); builder.up(); return; } builder.unknown(); }
@Test public void runningReceivers_stopCalledBeforeDestroying() { GatewayReceiver receiver = mock(GatewayReceiver.class); Set<GatewayReceiver> receivers = new HashSet<>(); receivers.add(receiver); when(cache.getGatewayReceivers()).thenReturn(receivers); when(receiver.isRunning()).thenReturn(true); function.execute(context); verify(resultSender).lastResult(resultCaptor.capture()); verify(receiver).stop(); CliFunctionResult result = resultCaptor.getValue(); assertThat(result.getStatus(true)).isEqualTo("OK"); }
@Override public CliFunctionResult executeFunction(FunctionContext context) { ResultSender<Object> resultSender = context.getResultSender(); Cache cache = context.getCache(); String memberNameOrId = CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember()); Set<GatewayReceiver> gatewayReceivers = cache.getGatewayReceivers(); if (gatewayReceivers != null && !gatewayReceivers.isEmpty()) { for (GatewayReceiver receiver : gatewayReceivers) { try { if (receiver.isRunning()) { receiver.stop(); } receiver.destroy(); return new CliFunctionResult(memberNameOrId, StatusState.OK, String.format("GatewayReceiver destroyed on \"%s\"", memberNameOrId)); } catch (Exception e) { logger.error(e.getMessage(), e); return new CliFunctionResult(memberNameOrId, e, ""); } } } return new CliFunctionResult(memberNameOrId, StatusState.IGNORABLE, "Gateway receiver not found."); }
public int getEndPort() { return rcv.getEndPort(); }
public String getBindAddress() { return rcv.getBindAddress(); }
public int getMaximumTimeBetweenPings() { return rcv.getMaximumTimeBetweenPings(); }
public int getSocketBufferSize() { return rcv.getSocketBufferSize(); }
/** * Handles Gateway receiver creation * * @param recv specific gateway receiver */ protected void handleGatewayReceiverCreate(GatewayReceiver recv) throws ManagementException { if (!isServiceInitialised("handleGatewayReceiverCreate")) { return; } if (!recv.isManualStart()) { return; } createGatewayReceiverMBean(recv); }
public String[] getGatewayTransportFilters() { List<GatewayTransportFilter> transPortfilters = rcv.getGatewayTransportFilters(); String[] filtersStr = null; if (transPortfilters != null && transPortfilters.size() > 0) { filtersStr = new String[transPortfilters.size()]; } else { return filtersStr; } int j = 0; for (GatewayTransportFilter filter : transPortfilters) { filtersStr[j] = filter.toString(); j++; } return filtersStr; }
@Test public void createWithDefaultAttributes() { GatewayReceiver receiver = gatewayReceiverFactory.create(); assertThat(receiver.isManualStart()).isTrue(); assertThat(receiver.getGatewayTransportFilters()).isEmpty(); assertThat(receiver.getEndPort()).isEqualTo(GatewayReceiver.DEFAULT_END_PORT); assertThat(receiver.getStartPort()).isEqualTo(GatewayReceiver.DEFAULT_START_PORT); assertThat(receiver.getBindAddress()).isEqualTo(GatewayReceiver.DEFAULT_BIND_ADDRESS); assertThat(receiver.getSocketBufferSize()) .isEqualTo(GatewayReceiver.DEFAULT_SOCKET_BUFFER_SIZE); assertThat(receiver.getHostnameForSenders()) .isEqualTo(GatewayReceiver.DEFAULT_HOSTNAME_FOR_SENDERS); assertThat(receiver.getMaximumTimeBetweenPings()) .isEqualTo(GatewayReceiver.DEFAULT_MAXIMUM_TIME_BETWEEN_PINGS); verify(cache, times(1)).addGatewayReceiver(receiver); }
@Test public void stoppedReceivers_stopNotCalledBeforeDestroying() { GatewayReceiver receiver = mock(GatewayReceiver.class); Set<GatewayReceiver> receivers = new HashSet<>(); receivers.add(receiver); when(cache.getGatewayReceivers()).thenReturn(receivers); when(receiver.isRunning()).thenReturn(false); function.execute(context); verify(resultSender).lastResult(resultCaptor.capture()); verify(receiver, never()).stop(); CliFunctionResult result = resultCaptor.getValue(); assertThat(result.getStatus(true)).isEqualTo("OK"); } }
public int getStartPort() { return rcv.getEndPort(); }
/** * @return Connected gateway receivers */ public String[] listConnectedGatewayReceivers() { if ((cache != null && cache.getGatewayReceivers().size() > 0)) { Set<GatewayReceiver> receivers = cache.getGatewayReceivers(); String[] arr = new String[receivers.size()]; int j = 0; for (GatewayReceiver recv : receivers) { arr[j] = recv.getBindAddress(); j++; } return arr; } return ManagementConstants.NO_DATA_STRING; }
/** * Handles Gateway receiver creation * * @param recv specific gateway receiver */ protected void handleGatewayReceiverStart(GatewayReceiver recv) throws ManagementException { if (!isServiceInitialised("handleGatewayReceiverStart")) { return; } if (!recv.isManualStart()) { createGatewayReceiverMBean(recv); } GatewayReceiverMBean mbean = (GatewayReceiverMBean) service.getLocalGatewayReceiverMXBean(); GatewayReceiverMBeanBridge bridge = mbean.getBridge(); bridge.startServer(); Notification notification = new Notification(JMXNotificationType.GATEWAY_RECEIVER_STARTED, memberSource, SequenceNumber.next(), System.currentTimeMillis(), ManagementConstants.GATEWAY_RECEIVER_STARTED_PREFIX); memberLevelNotifEmitter.sendNotification(notification); }