| /* |
| * Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package admin.monitoring; |
| |
| import admin.util.LogListener; |
| import com.sun.appserv.test.BaseDevTest.AsadminReturn; |
| import java.io.*; |
| import static admin.monitoring.Constants.*; |
| import java.util.logging.Level; |
| import java.util.logging.Logger; |
| |
| /** |
| * Test fixed issues from JIRA |
| * |
| * @author Byron Nevins |
| */ |
| public class Jira extends MonTest { |
| @Override |
| void runTests(TestDriver driver) { |
| setDriver(driver); |
| report(true, "Hello from JIRA Tests!"); |
| /* turn off this intermittent test for now. |
| test14389(); |
| */ |
| |
| test21646(); |
| test16313(); |
| test15397(); |
| test15054(); |
| test15923(); |
| test15500(); |
| test14748(); |
| test15895(); |
| test14461(); |
| test13905(); |
| test13723(); |
| test15964(); |
| } |
| |
| private void test21646() { |
| String prepend = "21646::"; |
| String pattern = "server.http-service.server.request.countbytesreceived-count"; |
| report(asadmin("enable-monitoring", "--modules", "http-service=HIGH"), prepend + "set-http-service-module-high"); |
| |
| AsadminReturn ar = asadminWithOutput("get", "-m", pattern); |
| String output = ar.outAndErr; |
| |
| report(asadmin("get", "-m", pattern), prepend + "get-request-value-countbytesreceived"); |
| |
| ar = asadminWithOutput("get", "-m", pattern); |
| report(checkForString(ar, output), prepend + "get-request-value-countbytesreceivedcountassamevalue"); |
| } |
| |
| private void test16313() { |
| final String yesDatum = "server.network.http-listener-1.connection-queue.countopenconnections-count"; |
| final String noDatum = "No monitoring data to report."; |
| final String prepend = "16313::check-getm-"; |
| final String pattern1 = "*openconnections*"; |
| final String pattern2 = "*.*openconnections*"; |
| final String pattern3 = "**********openconnections*****"; |
| |
| AsadminReturn ar = asadminWithOutput("get", "-m", pattern1); |
| report(!checkForString(ar, noDatum), prepend + pattern1); |
| report(checkForString(ar, yesDatum), prepend + pattern1); |
| |
| ar = asadminWithOutput("get", "-m", pattern2); |
| report(!checkForString(ar, noDatum), prepend + pattern2); |
| report(checkForString(ar, yesDatum), prepend + pattern2); |
| |
| ar = asadminWithOutput("get", "-m", pattern3); |
| report(!checkForString(ar, noDatum), prepend + pattern3); |
| report(checkForString(ar, yesDatum), prepend + pattern3); |
| } |
| |
| private void test15397() { |
| String prepend = "15397::"; |
| deploy(earFile); |
| report(asadminWithOutput("list-components").outAndErr.indexOf("webapp2") >= 0, prepend + "verify-deploy"); |
| report(checkForString( |
| asadminWithOutput("get", "-m", "server.applications.webapp2.*"), MAGIC_NAME_IN_APP), |
| prepend + "check-getm-1"); |
| report(checkForString( |
| asadminWithOutput("get", "-m", "server.applications.webapp2.webapp2webmod1\\.war*"), "webapp2webmod1"), |
| prepend + "check-getm-1"); |
| report(checkForString( |
| asadminWithOutput("get", "-m", "server.applications.webapp2.webapp2webmod1.war*"), "webapp2webmod1"), |
| prepend + "check-getm-1"); |
| } |
| |
| private void test15054() { |
| String prepend = "15054::"; |
| report(checkForString( |
| asadminWithOutput("get", "-m", CLUSTERED_INSTANCE_NAME1 + ".network.thread-pool.totalexecutedtasks-count"), CLUSTERED_INSTANCE_NAME1 + ".network.thread-pool.totalexecutedtasks-count"), |
| prepend + "check-getm-1"); |
| report(!checkForString( |
| asadminWithOutput("get", "-m", CLUSTERED_INSTANCE_NAME1 + ".server.network.thread-pool.totalexecutedtasks-count"), CLUSTERED_INSTANCE_NAME1 + ".network.thread-pool.totalexecutedtasks-count"), |
| prepend + "check-getm-0"); |
| } |
| |
| private void test15923() { |
| String prepend = "15923::"; |
| report(asadmin("enable-monitoring", "--modules", "deployment=HIGH"), |
| prepend + "set-deployment-module-high"); |
| report(asadmin("enable-monitoring", "--modules", "deployment=LOW"), |
| prepend + "set-deployment-module-low"); |
| report(asadmin("enable-monitoring", "--modules", "deployment=OFF"), |
| prepend + "set-deployment-module-off"); |
| report(!asadmin("enable-monitoring", "--modules", "garbage=HIGH"), |
| prepend + "set-deployment-module-garbage"); |
| } |
| |
| private void test15500() { |
| String prepend = "15500::"; |
| report(checkForString(asadminWithOutput("list-components"), "webapp2")); |
| report(checkForString( |
| asadminWithOutput("get", "-m", "server.applications.webapp2.webapp2webmod1\\.war.*"), MAGIC_NAME_IN_APP), |
| prepend + "check-getm-1bs"); |
| report(checkForString( |
| asadminWithOutput("get", "-m", "server.applications.webapp2.webapp2webmod1\\\\.war.*"), MAGIC_NAME_IN_APP), |
| prepend + "check-getm-2bs"); |
| |
| } |
| |
| private void thisIsCrazy() { |
| |
| if(Constants.isWindows == false) |
| return; |
| |
| System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZ ATTACH NOW !!!!!!! ZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZ ATTACH NOW !!!!!!! ZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZ ATTACH NOW !!!!!!! ZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZ ATTACH NOW !!!!!!! ZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); |
| /* |
| * Set the flag below to false to get out of the loop! |
| */ |
| |
| boolean continueWaiting = true; |
| int numSeconds = 3000; // this gives me plenty of time to get to Starbucks and attach! |
| |
| while(continueWaiting && --numSeconds > 0) { |
| try { |
| Thread.sleep(1000); |
| } |
| catch (InterruptedException ex) { |
| } |
| } |
| |
| System.out.printf("SERVERDOTSTAR = [%s]\n", SERVERDOTSTAR); |
| System.out.printf("STAR = [%s]\n", STAR); |
| |
| AsadminReturn ar4 = asadminWithOutput("list", "-m", STAR); |
| AsadminReturn ar10 = asadminWithOutput("get", "-m", STAR); |
| thisIsCrazyDetail(ar4, "ar4"); |
| thisIsCrazyDetail(ar10, "ar10"); |
| System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); |
| System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); |
| } |
| private void thisIsCrazyDetail(AsadminReturn ar, final String label) { |
| System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); |
| System.out.printf("Output from %s:\n%s\n", label, ar.outAndErr); |
| System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); |
| } |
| |
| private void test14389() { |
| String prepend = "14389::"; |
| AsadminReturn ar = asadminWithOutput("list", "-m", SERVERDOTSTAR); |
| report(checkForString(ar, "server.applications"), prepend + "check-listm-server-applications"); |
| report(checkForString(ar, "server.web.session"), prepend + "check-listm-server-web-session"); |
| report(checkForString(ar, "server.web.request"), prepend + "check-listm-server-web-request"); |
| report(checkForString(ar, "server.web.servlet"), prepend + "check-listm-server-web-servlet"); |
| AsadminReturn ar2 = asadminWithOutput("get", "-m", SERVERDOTSTAR); |
| report(checkForString(ar2, "server.applications"), prepend + "check-getm-server"); |
| report(checkForString(ar2, "server.web.session"), prepend + "check-getm-server-web-session"); |
| report(checkForString(ar2, "server.web.request"), prepend + "check-getm-server-web-request"); |
| report(checkForString(ar2, "server.web.servlet"), prepend + "check-getm-server-web-servlet"); |
| AsadminReturn ar3 = asadminWithOutput("list", "-m", "clustered-i1.*"); |
| report(checkForString(ar, "clustered-i1.applications"), prepend + "check-listm-clustered-i1-applications"); |
| report(checkForString(ar, "clustered-i1.web.session"), prepend + "check-listm-clustered-i1-web-session"); |
| } |
| |
| private void test14389_old() { |
| String prepend = "14389::"; |
| //Try list -m server.* instead of * to see if it makes a difference |
| // 4/18/12 'list -m server.*' works, but not 'list -m *' |
| // Almost certainly caused by the the command processor "globbing". |
| //AsadminReturn ar = asadminWithOutput("list", "-m", STAR); |
| AsadminReturn ar = asadminWithOutput("list", "-m", "server.*"); |
| AsadminReturn arx = asadminWithOutput("list", "-m", "server.applications.*"); |
| AsadminReturn ary = asadminWithOutput("list", "-m", "server.applications*"); |
| |
| // this test started failing intermittenly in early March 2012. I've now |
| // added some diagnostic code... |
| boolean b1 = checkForString(ar, "server.applications"); |
| boolean b2 = checkForString(ar, "server.web.session"); |
| boolean b3 = checkForString(ar, "server.web.request"); |
| boolean b4 = checkForString(ar, "server.web.servlet"); |
| if( ! (b1 && b2 && b3 && b4) ) { |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| System.out.println("Monitoring Test for 14389 FAILED!!"); |
| System.out.printf("b1: %b, b2: %b, b3: %b, b4: %b\n", b1,b2,b3,b4); |
| System.out.println("Here is outAndErr:\n" + ar.outAndErr); |
| System.out.println("HERE is output from arx: \n" + arx.outAndErr); |
| System.out.println("HERE is output from ary: \n" + ary.outAndErr); |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| System.out.println("YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"); |
| } |
| report(checkForString(ar, "server.applications"), prepend + "check-listm-server-applications"); |
| report(checkForString(ar, "server.web.session"), prepend + "check-listm-server-web-session"); |
| report(checkForString(ar, "server.web.request"), prepend + "check-listm-server-web-request"); |
| report(checkForString(ar, "server.web.servlet"), prepend + "check-listm-server-web-servlet"); |
| |
| //Try get -m server.* instead of * to see if it makes a difference |
| // 4/18/12 'get -m server.*' works, but not 'get -m *' |
| AsadminReturn ar2 = asadminWithOutput("get", "-m", SERVERDOTSTAR); |
| //AsadminReturn ar2 = asadminWithOutput("get", "-m", STAR); |
| report(checkForString(ar2, "server.applications"), prepend + "check-getm-server"); |
| report(checkForString(ar2, "server.web.session"), prepend + "check-getm-server-web-session"); |
| report(checkForString(ar2, "server.web.request"), prepend + "check-getm-server-web-request"); |
| report(checkForString(ar2, "server.web.servlet"), prepend + "check-getm-server-web-servlet"); |
| } |
| |
| private void test14748() { |
| String prepend = "14748::"; |
| report(asadmin("create-jdbc-connection-pool", "--datasourceclassname", "org.apache.derby.jdbc.ClientDataSource", |
| "--restype", "javax.sql.XADataSource", RESOURCE_NAME_WITH_SLASH)); |
| asadmin("ping-jdbc-connection-pool", RESOURCE_NAME_WITH_SLASH); |
| |
| } |
| private static final File earFile = new File(RESOURCES_DIR, "webapp2.ear"); |
| private static final String MAGIC_NAME_IN_APP = "webapp2webmod1_Servlet2"; |
| private static final String RESOURCE_NAME_WITH_SLASH = "jdbc/test"; |
| private static final File monapp1 = new File(RESOURCES_DIR, "MonApp.war"); |
| private static final File monapp2 = new File(RESOURCES_DIR, "MonApp2.war"); |
| |
| /** |
| * This method is here in case you are looking through these methods and |
| * comparing against a query of issue numbers. This issue is VERY HEAVILY |
| * tested in the Enabler class. This method does nothing. It's here so you |
| * don't waste time investigating whether it needs tests. It doesn't!! |
| */ |
| private void test15895() { |
| report(true, "Issue 15895 already tested in Enabler"); |
| } |
| |
| /* |
| * Bug: running "get i1.*" produced different results than "get -m i1.*" |
| * Namely an extra ".server" appeared in the latter's output |
| */ |
| private void test14461() { |
| // important. If you are reading this you should know this factoid: |
| // if there is no such key found you will get output in stderr with the |
| // keyname. If it suceeeds you will find it in stdout. |
| // that applies only to get -- not to get -m |
| |
| final String prepend = "test14461::"; |
| AsadminReturn r = null; |
| |
| for (int i = 0; i < KEYS14461_GET.length; i++) { |
| String label = prepend + "GET-"; |
| String goodkey = KEYS14461_GET[i]; |
| String badkey = KEYS14461_GET_BAD[i]; |
| report(doesGetMatch(goodkey), label); |
| report(!doesGetMatch(badkey), label); |
| } |
| |
| for (int i = 0; i < KEYS14461_GET_M.length; i++) { |
| String label = prepend + "GET-M-"; |
| String goodkey = KEYS14461_GET_M[i]; |
| String badkey = KEYS14461_GET_M_BAD[i]; |
| String verybadkey = KEYS14461_GET_M_VERY_BAD[i]; |
| r = asadminWithOutput("get", "-m", goodkey); |
| report(r.out.indexOf(NO_DATA) < 0, label); |
| r = asadminWithOutput("get", "-m", badkey); |
| report(r.out.indexOf(NO_DATA) >= 0, label); |
| r = asadminWithOutput("get", "-m", verybadkey); |
| report(r.out.indexOf(NO_DATA) >= 0, label); |
| } |
| |
| } |
| |
| /* |
| * Nothing should be logged at the INFO level when the monitoring level is |
| * changed. At the FINE level we should see it. |
| */ |
| private void test13905() { |
| LogListener listener = null; |
| |
| try { |
| final String prepend = "test13905::"; |
| listener = new LogListener(DOMAIN_NAME); |
| File logfile = listener.getFile(); |
| |
| if(logfile == null) { |
| report(false, "LogListener.getFile() returned null"); |
| return; |
| } |
| |
| report(logfile.exists(), prepend + "logfile exists"); |
| report(logfile.isFile(), prepend + "logfile is-a-file"); |
| report(logfile.canRead(), prepend + "logfile is readable"); |
| report(logfile.length() > 0, prepend + "logfile is not empty"); |
| |
| // verify that changing mon-level does not cause any logging |
| |
| // don't just ASSUME it is set to INFO!!! |
| report(asadmin("set-log-levels", "jakarta.enterprise.system.tools.monitor=INFO"), "set-log-level-back"); |
| |
| // clear log |
| listener.getLatest(3); |
| |
| // level set to INFO -- we ought to not see any **monitoring** log messages |
| report(asadmin("enable-monitoring", "--modules", "web-container=LOW"), prepend + "change-mon-level-nolog-"); |
| String s = listener.getLatest(2); |
| report(s.indexOf("monitor") < 0, prepend + "no-log-output"); |
| |
| report(asadmin("enable-monitoring", "--modules", "web-container=HIGH"), prepend + "change-mon-level-nolog-"); |
| s = listener.getLatest(2); |
| report(s.indexOf("monitor") < 0, prepend + "no-log-output"); |
| |
| report(asadmin("set-log-levels", "jakarta.enterprise.system.tools.monitor=FINE"), "set-log-level-to-fine"); |
| s = listener.getLatest(5); |
| report(s.length() > 0, prepend + "set-log-level was noticed"); |
| |
| // level set to FINE -- now we ought to see some log messages |
| report(asadmin("enable-monitoring", "--modules", "web-container=LOW"), prepend + "change-mon-level-yeslog-"); |
| s = listener.getLatest(2); |
| report(s.indexOf("monitor") >= 0, prepend + "yes-log-output"); |
| |
| report(asadmin("enable-monitoring", "--modules", "web-container=HIGH"), prepend + "change-mon-level-yeslog-"); |
| |
| |
| // bnevins 5/31/11 -- I don't know why this test fails all the time. |
| // it's very unimportant so I'm disabling the test... |
| // s = listener.getLatest(2); |
| //report(s.indexOf("monitor") >= 0, prepend + "yes-log-output"); |
| |
| // return to original state |
| report(asadmin("set-log-levels", "jakarta.enterprise.system.tools.monitor=INFO"), "set-log-level-back"); |
| s = listener.getLatest(5); |
| report(s.length() > 0, prepend + "set-log-level was noticed"); |
| } |
| finally { // |
| listener.close(); |
| } |
| } |
| /* |
| * Byron Nevins Big Bug in monitoring -- it could not find sub-nodes |
| * properly when they contained a literal "." Issue fixed June 25, 2011 |
| */ |
| |
| private void test15964() { |
| final String prepend = "test15964::"; |
| deploy("server", monapp1, "zzzzz"); |
| deploy("server", monapp2, "xxx.yyy"); |
| |
| String get1 = "server.applications.xxx\\.yyy.server.ProbeServlet.errorcount-count"; |
| String get2 = "server.applications.xxx.yyy.server.ProbeServlet.errorcount-count"; |
| String get3 = "server.applications.zzzzz.server.ProbeServlet.errorcount-count"; |
| |
| // YES! This should work too!! |
| String get4 = "server.applications.xxx___MONDOT___yyy.server.ProbeServlet.errorcount-count"; |
| |
| AsadminReturn ar1 = asadminWithOutput("get", "-m", get1); |
| AsadminReturn ar2 = asadminWithOutput("get", "-m", get2); |
| AsadminReturn ar3 = asadminWithOutput("get", "-m", get3); |
| AsadminReturn ar4 = asadminWithOutput("get", "-m", get4); |
| |
| // "=" only appears if there is a valid data item |
| report(checkForString(ar1, "= 0"), prepend + "monapp1-with-backslash"); |
| report(checkForString(ar2, "= 0"), prepend + "monapp1-without-backslash"); |
| report(checkForString(ar3, "= 0"), prepend + "monapp2"); |
| report(checkForString(ar4, "= 0"), prepend + "monapp1-with-MONDOT"); |
| } |
| |
| /* |
| * this test is in Setup.java This fake version is here just so you will |
| * find it when cross-checking against issues so you know that there *is* a |
| * regression test somewhere... |
| */ |
| private void test13723() { |
| report(true, "this test had to run earlier"); |
| } |
| private final static String[] KEYS14461_GET = new String[]{ |
| STAND_ALONE_INSTANCE_NAME + ".monitoring-service.monitoring-enabled", |
| CLUSTERED_INSTANCE_NAME1 + ".monitoring-service.monitoring-enabled", |
| CLUSTERED_INSTANCE_NAME2 + ".monitoring-service.monitoring-enabled", |
| CLUSTER_NAME + ".monitoring-service.monitoring-enabled", |
| "server.monitoring-service.monitoring-enabled", |
| STAND_ALONE_INSTANCE_NAME + ".network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTERED_INSTANCE_NAME1 + ".network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTERED_INSTANCE_NAME2 + ".network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTER_NAME + ".network-config.protocols.protocol.admin-listener.http.adapter", |
| "server.network-config.protocols.protocol.admin-listener.http.adapter",}; |
| private final static String[] KEYS14461_GET_BAD = new String[]{ |
| STAND_ALONE_INSTANCE_NAME + ".server.monitoring-service.monitoring-enabled", |
| CLUSTERED_INSTANCE_NAME1 + ".server.monitoring-service.monitoring-enabled", |
| CLUSTERED_INSTANCE_NAME2 + ".server.monitoring-service.monitoring-enabled", |
| CLUSTER_NAME + ".server.monitoring-service.monitoring-enabled", |
| "server.server.monitoring-service.monitoring-enabled", |
| STAND_ALONE_INSTANCE_NAME + ".server.network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTERED_INSTANCE_NAME1 + ".server.network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTERED_INSTANCE_NAME2 + ".server.network-config.protocols.protocol.admin-listener.http.adapter", |
| CLUSTER_NAME + ".server.network-config.protocols.protocol.admin-listener.http.adapter", |
| "server.server.network-config.protocols.protocol.admin-listener.http.adapter",}; |
| private final static String[] KEYS14461_GET_M = new String[]{ |
| STAND_ALONE_INSTANCE_NAME + ".jvm.class-loading-system.totalloadedclass-count-count",}; |
| private final static String[] KEYS14461_GET_M_BAD = new String[]{ |
| STAND_ALONE_INSTANCE_NAME + ".server.jvm.class-loading-system.totalloadedclass-count-count",}; |
| private final static String[] KEYS14461_GET_M_VERY_BAD = new String[]{ |
| STAND_ALONE_INSTANCE_NAME + ".server.server.jvm.class-loading-system.totalloadedclass-count-count",}; |
| } |