@Override protected Object handleOperation(String operationName, OperationContext context, ModelNode operation) throws OperationFailedException { if (ClusterConnectionDefinition.GET_NODES.equals(operationName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); try { Map<String, String> nodes = control.getNodes(); final ModelNode result = context.getResult(); result.setEmptyObject(); for (Map.Entry<String, String> entry : nodes.entrySet()) { result.get(entry.getKey()).set(entry.getValue()); } } catch (Exception e) { context.getFailureDescription().set(e.getLocalizedMessage()); } } else { unsupportedOperation(operationName); } return null; } }
@Override protected void handleReadAttribute(String attributeName, OperationContext context, ModelNode operation) throws OperationFailedException { if (ClusterConnectionDefinition.NODE_ID.getName().equals(attributeName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); context.getResult().set(control.getNodeID()); } else if (ClusterConnectionDefinition.TOPOLOGY.getName().equals(attributeName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); context.getResult().set(control.getTopology()); } else { unsupportedAttribute(attributeName); } }
@Test public void testAttributes1() throws Exception { checkResource(ObjectNameBuilder.DEFAULT.getClusterConnectionObjectName(clusterConnectionConfig1.getName())); ClusterConnectionControl clusterConnectionControl = createManagementControl(clusterConnectionConfig1.getName()); Assert.assertEquals(clusterConnectionConfig1.getName(), clusterConnectionControl.getName()); Assert.assertEquals(clusterConnectionConfig1.getAddress(), clusterConnectionControl.getAddress()); Assert.assertEquals(clusterConnectionConfig1.getDiscoveryGroupName(), clusterConnectionControl.getDiscoveryGroupName()); Assert.assertEquals(clusterConnectionConfig1.getRetryInterval(), clusterConnectionControl.getRetryInterval()); Assert.assertEquals(clusterConnectionConfig1.isDuplicateDetection(), clusterConnectionControl.isDuplicateDetection()); Assert.assertEquals(clusterConnectionConfig1.getMessageLoadBalancingType().getType(), clusterConnectionControl.getMessageLoadBalancingType()); Assert.assertEquals(clusterConnectionConfig1.getMaxHops(), clusterConnectionControl.getMaxHops()); Assert.assertEquals(0L, clusterConnectionControl.getMessagesPendingAcknowledgement()); Assert.assertEquals(0L, clusterConnectionControl.getMessagesAcknowledged()); Map<String, Object> clusterMetrics = clusterConnectionControl.getMetrics(); Assert.assertEquals(0L, clusterMetrics.get(ClusterConnectionMetrics.MESSAGES_PENDING_ACKNOWLEDGEMENT_KEY)); Assert.assertEquals(0L, clusterMetrics.get(ClusterConnectionMetrics.MESSAGES_ACKNOWLEDGED_KEY)); Assert.assertNull(clusterConnectionControl.getBridgeMetrics("bad")); Object[] connectors = clusterConnectionControl.getStaticConnectors(); Assert.assertEquals(1, connectors.length); String connector = (String) connectors[0]; Assert.assertEquals(clusterConnectionConfig1.getStaticConnectors().get(0), connector); String jsonString = clusterConnectionControl.getStaticConnectorsAsJSON(); Assert.assertNotNull(jsonString); JsonArray array = JsonUtil.readJsonArray(jsonString); Assert.assertEquals(1, array.size()); Assert.assertEquals(clusterConnectionConfig1.getStaticConnectors().get(0), array.getString(0)); Assert.assertNull(clusterConnectionControl.getDiscoveryGroupName()); Assert.assertTrue(clusterConnectionControl.isStarted()); }
@Test public void testAttributes2() throws Exception { checkResource(ObjectNameBuilder.DEFAULT.getClusterConnectionObjectName(clusterConnectionConfig2.getName())); ClusterConnectionControl clusterConnectionControl = createManagementControl(clusterConnectionConfig2.getName()); Assert.assertEquals(clusterConnectionConfig2.getName(), clusterConnectionControl.getName()); Assert.assertEquals(clusterConnectionConfig2.getAddress(), clusterConnectionControl.getAddress()); Assert.assertEquals(clusterConnectionConfig2.getDiscoveryGroupName(), clusterConnectionControl.getDiscoveryGroupName()); Assert.assertEquals(clusterConnectionConfig2.getRetryInterval(), clusterConnectionControl.getRetryInterval()); Assert.assertEquals(clusterConnectionConfig2.isDuplicateDetection(), clusterConnectionControl.isDuplicateDetection()); Assert.assertEquals(clusterConnectionConfig2.getMessageLoadBalancingType().getType(), clusterConnectionControl.getMessageLoadBalancingType()); Assert.assertEquals(clusterConnectionConfig2.getMaxHops(), clusterConnectionControl.getMaxHops()); Object[] connectorPairs = clusterConnectionControl.getStaticConnectors(); Assert.assertEquals(0, connectorPairs.length); String jsonPairs = clusterConnectionControl.getStaticConnectorsAsJSON(); Assert.assertEquals("[]", jsonPairs); Assert.assertEquals(clusterConnectionConfig2.getDiscoveryGroupName(), clusterConnectionControl.getDiscoveryGroupName()); }
@Test public void testNodes() throws Exception { ClusterConnectionControl clusterConnectionControl_0 = createManagementControl(clusterConnectionConfig_0.getName()); Assert.assertTrue(clusterConnectionControl_0.isStarted()); Map<String, String> nodes = clusterConnectionControl_0.getNodes(); Assert.assertEquals(0, nodes.size()); server1.start(); waitForServerToStart(server1); long start = System.currentTimeMillis(); while (true) { nodes = clusterConnectionControl_0.getNodes(); if (nodes.size() == 1 || System.currentTimeMillis() - start > 30000) { break; } Thread.sleep(50); } Assert.assertEquals(1, nodes.size()); String remoteAddress = nodes.values().iterator().next(); Assert.assertTrue(remoteAddress.endsWith(":" + port_1)); }
@Override protected void handleReadAttribute(String attributeName, OperationContext context, ModelNode operation) throws OperationFailedException { if (ClusterConnectionDefinition.NODE_ID.getName().equals(attributeName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); context.getResult().set(control.getNodeID()); } else if (ClusterConnectionDefinition.TOPOLOGY.getName().equals(attributeName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); context.getResult().set(control.getTopology()); } else { unsupportedAttribute(attributeName); } }
@Override protected Object handleOperation(String operationName, OperationContext context, ModelNode operation) throws OperationFailedException { if (ClusterConnectionDefinition.GET_NODES.equals(operationName)) { ClusterConnectionControl control = getActiveMQComponentControl(context, operation, false); try { Map<String, String> nodes = control.getNodes(); final ModelNode result = context.getResult(); result.setEmptyObject(); for (Map.Entry<String, String> entry : nodes.entrySet()) { result.get(entry.getKey()).set(entry.getValue()); } } catch (Exception e) { context.getFailureDescription().set(e.getLocalizedMessage()); } } else { unsupportedOperation(operationName); } return null; } }