blob: 9254956fde90f2e1c17b2a15e982c1831beb8c33 [file] [log] [blame]
/*
* Copyright (c) 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 test;
/*
* StringTest.java
*
* Created on February 19, 2006
*/
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
import javax.management.MBeanServerConnection;
import com.sun.enterprise.admin.mbeans.custom.CMBStrings;
import java.util.*;
/**
*/
public class StringTest implements RemoteAdminQuicklookTest
{
public StringTest() throws Exception
{
}
public long getExecutionTime()
{
return ( end - start );
}
public void setMBeanServerConnection(final MBeanServerConnection c)
{
}
public String getName()
{
return ( this.getClass().getName() );
}
public String test()
{
try
{
start = System.currentTimeMillis();
bundles = CMBStrings.getBundles();
dump();
return ( SimpleReporterAdapter.PASS );
}
catch(final Exception e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
finally
{
end = System.currentTimeMillis();
}
}
private void dump()
{
// the first bundle has the log messages...
ResourceBundle bundle = bundles.get(0);
makeLog(bundle);
dumpLog();
}
private void makeLog(ResourceBundle bundle)
{
List<Property> props = new ArrayList<Property>();
Enumeration<String> keys = bundle.getKeys();
while(keys.hasMoreElements())
{
String key = keys.nextElement();
try
{
String val = bundle.getString(key);
if(key.startsWith("ADM16") || val.startsWith("ADM16"))
props.add(new Property(key, val));
}
catch(Exception e)
{
System.out.println("EXCEPTION getting value for " + key);
}
}
// now create a list of LogProperty from the props...
for(Property p : props)
{
if(p.cause == false)
loglist.add(new LogProperty(p, props));
}
}
private void dumpLog()
{
System.out.println("\n******************************************************");
System.out.println("************* DUMP LOG MESSAGES **********************");
System.out.println("******************************************************\n");
for(LogProperty p : loglist)
System.out.println(p);
}
int parseNum(String s)
{
try
{
return Integer.parseInt(s.substring(3, 7));
}
catch(Exception e)
{
e.printStackTrace();
return -1;
}
}
private final static String CONFIG_FILE="stringtest.properties";
private long start, end;
private List<ResourceBundle> bundles;
private List<LogProperty> loglist = new ArrayList<LogProperty>();
private final static String CMB_PREFIX = "ADM16";
class Property
{
Property(String k, String v)
{
key = k;
val = v;
if(key.startsWith(CMB_PREFIX))
{
num = parseNum(key);
cause = true;
}
else if(val.startsWith(CMB_PREFIX))
{
num = parseNum(val);
cause = false;
}
}
Property(Property p)
{
key = p.key;
val = p.val;
cause = p.cause;
num = p.num;
}
public String toString()
{
return "Key: " + key + "\nVal: " + val + "\nNum: " + num + "\n";
}
String key;
String val;
int num;
boolean cause = false;
}
class LogProperty extends Property
{
LogProperty(Property mainProp, List<Property> allProps)
{
super(mainProp);
assert cause == false;
// look for cause...
for(Property prop : allProps)
{
if(!prop.cause)
continue;
if(num != prop.num)
continue;
causes.add(prop);
}
}
public String toString()
{
String ret = super.toString();
if(causes.size() <= 0)
return ret + " ***** MISSING DIAG MESSAGES *********" + "\n\n";
ret += "****** ASSOCIATED DIAG MESSAGES ****\n";
for(Property p : causes)
ret += p.toString();
return ret + "\n";
}
List<Property> causes = new ArrayList<Property>();
}
}