| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more contributor license |
| * agreements. See the NOTICE file distributed with this work for additional information regarding |
| * copyright ownership. The ASF licenses this file to You 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.apache.geode.tools.pulse.tests; |
| |
| import java.io.IOException; |
| |
| import javax.management.NotificationBroadcasterSupport; |
| import javax.management.openmbean.CompositeData; |
| import javax.management.openmbean.CompositeDataSupport; |
| import javax.management.openmbean.CompositeType; |
| import javax.management.openmbean.OpenDataException; |
| import javax.management.openmbean.OpenType; |
| import javax.management.openmbean.SimpleType; |
| import javax.management.openmbean.TabularData; |
| import javax.management.openmbean.TabularDataSupport; |
| import javax.management.openmbean.TabularType; |
| |
| public class ServerObject extends NotificationBroadcasterSupport implements ServerObjectMBean { |
| private String name = null; |
| |
| private TabularDataSupport wanInfo; |
| private static String[] itemNames = {"key", "value"}; |
| private static String[] itemDescriptions = {"Key", "Value"}; |
| private static OpenType[] itemTypes = {SimpleType.STRING, SimpleType.BOOLEAN}; |
| private static CompositeType wanInfoType = null; |
| |
| private static String[] indexNames = {"key"}; |
| private static TabularType wanType = null; |
| |
| static { |
| try { |
| wanInfoType = |
| new CompositeType("wanInfo", "WAN Information", itemNames, itemDescriptions, itemTypes); |
| |
| wanType = new TabularType("wanInfo", "WAN Information", wanInfoType, indexNames); |
| |
| } catch (OpenDataException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| public ServerObject(String name) { |
| this.name = name; |
| this.wanInfo = new TabularDataSupport(wanType); |
| } |
| |
| private String getKey(String propName) { |
| return "server." + name + "." + propName; |
| } |
| |
| @Override |
| public String[] listCacheServers() { |
| return JMXProperties.getInstance().getProperty(getKey("listCacheServers"), "").split(" "); |
| } |
| |
| @Override |
| public String[] listServers() { |
| return JMXProperties.getInstance().getProperty(getKey("listServers"), "").split(" "); |
| } |
| |
| @Override |
| public TabularData viewRemoteClusterStatus() { |
| wanInfo.clear(); |
| String[] wan = JMXProperties.getInstance().getProperty(getKey("wanInfo"), "").split(" "); |
| int cnt = 0; |
| while (wan.length >= (cnt + 2)) { |
| try { |
| wanInfo.put(buildWanInfoType(new String(wan[cnt]), Boolean.parseBoolean(wan[cnt + 1]))); |
| } catch (OpenDataException e) { |
| e.printStackTrace(); |
| } |
| cnt += 2; |
| } |
| |
| return (TabularData) wanInfo.clone(); |
| } |
| |
| @Override |
| public int getMemberCount() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("memberCount"))); |
| } |
| |
| @Override |
| public int getNumClients() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("numClients"))); |
| } |
| |
| @Override |
| public int getDistributedSystemId() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("distributedSystemId"))); |
| } |
| |
| @Override |
| public int getLocatorCount() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("locatorCount"))); |
| } |
| |
| @Override |
| public int getTotalRegionCount() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("totalRegionCount"))); |
| } |
| |
| @Override |
| public int getNumRunningFunctions() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("numRunningFunctions"))); |
| } |
| |
| @Override |
| public long getRegisteredCQCount() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("registeredCQCount"))); |
| } |
| |
| @Override |
| public int getNumSubscriptions() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("numSubscriptions"))); |
| } |
| |
| // For SQLFire/GemFireXD |
| @Override |
| public int getTransactionCommitted() { |
| return Integer |
| .parseInt(JMXProperties.getInstance().getProperty(getKey("TransactionCommitted"))); |
| } |
| |
| // For SQLFire/GemFireXD |
| @Override |
| public int getTransactionRolledBack() { |
| return Integer |
| .parseInt(JMXProperties.getInstance().getProperty(getKey("TransactionRolledBack"))); |
| } |
| |
| @Override |
| public long getTotalHeapSize() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("totalHeapSize"))); |
| } |
| |
| @Override |
| public long getUsedHeapSize() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("usedHeapSize"))); |
| } |
| |
| @Override |
| public long getMaxMemory() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("MaxMemory"))); |
| } |
| |
| @Override |
| public long getUsedMemory() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("UsedMemory"))); |
| } |
| |
| @Override |
| public long getTotalRegionEntryCount() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("totalRegionEntryCount"))); |
| } |
| |
| @Override |
| public int getCurrentQueryCount() { |
| return Integer.parseInt(JMXProperties.getInstance().getProperty(getKey("currentQueryCount"))); |
| } |
| |
| @Override |
| public long getTotalDiskUsage() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("totalDiskUsage"))); |
| } |
| |
| @Override |
| public double getDiskWritesRate() { |
| return Double.parseDouble(JMXProperties.getInstance().getProperty(getKey("diskWritesRate"))); |
| } |
| |
| @Override |
| public double getAverageWrites() { |
| String val = JMXProperties.getInstance().getProperty(getKey("averageWrites"), ""); |
| double ret = Double.parseDouble(val); |
| return ret; |
| // return Double.parseDouble(JMXProperties.getInstance().getProperty( |
| // getKey("averageWrites"), "")); |
| } |
| |
| @Override |
| public double getAverageReads() { |
| return Double.parseDouble(JMXProperties.getInstance().getProperty(getKey("averageReads"), "")); |
| } |
| |
| @Override |
| public double getQueryRequestRate() { |
| return Double |
| .parseDouble(JMXProperties.getInstance().getProperty(getKey("queryRequestRate"), "")); |
| } |
| |
| @Override |
| public double getDiskReadsRate() { |
| return Double.parseDouble(JMXProperties.getInstance().getProperty(getKey("diskReadsRate"), "")); |
| } |
| |
| @Override |
| public long getJVMPauses() { |
| return Long.parseLong(JMXProperties.getInstance().getProperty(getKey("jvmPauses"), "")); |
| } |
| |
| private CompositeData buildWanInfoType(String key, Boolean state) throws OpenDataException { |
| Object[] itemValues = {key, state}; |
| CompositeData result = new CompositeDataSupport(wanInfoType, itemNames, itemValues); |
| |
| return result; |
| } |
| |
| @Override |
| public String queryData(String p0, String p1, int p2) { |
| // p0 : query |
| // p1 : comma separated members |
| // p2 : limit |
| |
| DataBrowserResultLoader dbrLoader = DataBrowserResultLoader.getInstance(); |
| |
| try { |
| return dbrLoader.load(p0); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| return e.getMessage(); |
| } |
| } |
| } |