/******************************************************************************* * Copyright (c) 2015 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.foundation.checkup.test; import java.io.InputStream; import java.net.URISyntaxException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.widgets.Display; import org.jboss.tools.foundation.checkup.JVMProblemDetectorMessages; import org.jboss.tools.foundation.checkup.dialog.UnresolvedClassesDialog; import org.jboss.tools.foundation.checkup.dialog.UnresolvedClassesDialog.ListContent; import org.jboss.tools.foundation.checkup.dialog.UnresolvedClassesDialog.ListLabelProvider; import org.jboss.tools.foundation.checkup.dialog.UnresolvedModulesDialog; import org.jboss.tools.foundation.checkup.dialog.UnresolvedModulesDialog.LabelProvider; import org.jboss.tools.foundation.checkup.dialog.UnresolvedModulesDialog.TreeContent; import org.jboss.tools.foundation.checkup.internal.log.JVMProblemLogUtil; import org.jboss.tools.foundation.checkup.internal.model.Dependant; import org.jboss.tools.foundation.checkup.internal.model.DependantList; import org.jboss.tools.foundation.checkup.internal.model.JVMProblemModel; import org.jboss.tools.foundation.checkup.internal.model.UnresolvedClass; import org.jboss.tools.foundation.checkup.internal.model.UnresolvedModule; import org.jboss.tools.foundation.checkup.internal.model.UnresolvedStructure; import org.junit.Assert; import org.junit.Test; public class JVMProblemDetectorTest{ public static final String UNRESOLVED_MODULE = "org.jboss.tools.foundation.checkup.testplugin requires JavaSE version 1.9"; //$NON-NLS-1$ public static final String UNRESOLVED_CLASS = "org/jboss/tools/usage/event/UsageEventType compiled with Java version 1.9"; //$NON-NLS-1$ @Test public void testJVMProblemDetector(){ List<UnresolvedModule> modules = getUnresolvedModules(); Assert.assertEquals("Wrong number of unresolved modules", 1, modules.size()); // for(UnresolvedModule module : modules){ // System.out.println("Unresolved module - "+module.toString()); // } Assert.assertEquals("Wrong unresolved module", UNRESOLVED_MODULE, modules.get(0).toString()); } @Test public void testUnresolvedModulesDialogProviders(){ List<UnresolvedModule> modules = getUnresolvedModules(); UnresolvedModulesDialog dialog = new UnresolvedModulesDialog(Display.getDefault().getActiveShell(), modules, "JavaSE-1.8"); TreeContent contentProvider = dialog.new TreeContent(); LabelProvider labelProvider = dialog.new LabelProvider(); Object[] children = contentProvider.getChildren(modules); // UnresolvedModule Assert.assertEquals("Unexpected number of unresolved modules", 1, children.length); Assert.assertTrue("Dialog Content Provider should return instanceof UnresolvedModule", children[0] instanceof UnresolvedModule); UnresolvedModule module = (UnresolvedModule) children[0]; Assert.assertEquals("Unexpected label for UnresolvedModule", UNRESOLVED_MODULE, labelProvider.getText(module)); children = contentProvider.getChildren(module); // DependantList Assert.assertEquals("Unexpected number of unresolved modules children", 1, children.length); Assert.assertTrue("Dialog Content Provider should return instanceof UnresolvedModule", children[0] instanceof DependantList); DependantList list = (DependantList) children[0]; Assert.assertEquals("Unexpected label for DependantList", JVMProblemDetectorMessages.DEPENDANT_MODULES, labelProvider.getText(list)); children = contentProvider.getChildren(list); // Dependant Assert.assertEquals("Unexpected number of dependant modules", 1, children.length); Assert.assertTrue("Dialog Content Provider should return instanceof Dependant", children[0] instanceof Dependant); Dependant dependant = (Dependant) children[0]; Assert.assertEquals("Unexpected label for Dependant", "org.jboss.tools.foundation.checkup.test", labelProvider.getText(dependant)); } @Test public void testUnresolvedClassesDialogProviders(){ List<UnresolvedClass> classes = getUnresolvedClasses(); UnresolvedClassesDialog dialog = new UnresolvedClassesDialog(Display.getDefault().getActiveShell(), classes, "JavaSE-1.8"); ListContent contentProvider = dialog.new ListContent(); ListLabelProvider labelProvider = dialog.new ListLabelProvider(); Object[] children = contentProvider.getElements(classes); // UnresolvedModule Assert.assertEquals("Unexpected number of unresolved classes", 1, children.length); Assert.assertTrue("Dialog Content Provider should return instanceof UnresolvedClass", children[0] instanceof UnresolvedClass); UnresolvedClass module = (UnresolvedClass) children[0]; Assert.assertEquals("Unexpected label for UnresolvedClass", UNRESOLVED_CLASS, labelProvider.getText(module)); } @Test public void testOneSessionDateBefore() throws ParseException, URISyntaxException{ JVMProblemModel model = new JVMProblemModel(); model.setEclipseStartTime("2015-07-07 14:38:03.531"); InputStream stream = JVMProblemDetectorTest.class.getClassLoader().getResourceAsStream("/resources/log1.txt"); Assert.assertNotNull(stream); JVMProblemLogUtil.readLogFile(model, stream); Assert.assertTrue(model.getStructure().getUnresolvedModules().size()>0); } @Test public void testOneSessionDateAfter() throws ParseException{ JVMProblemModel model = new JVMProblemModel(); model.setEclipseStartTime("2015-07-07 15:38:03.531"); InputStream stream = JVMProblemDetectorTest.class.getClassLoader().getResourceAsStream("/resources/log1.txt"); Assert.assertNotNull(stream); JVMProblemLogUtil.readLogFile(model, stream); Assert.assertTrue(model.getStructure().getUnresolvedModules().size()==0); } @Test public void testTwoSessionsDateBefore() throws ParseException{ JVMProblemModel model = new JVMProblemModel(); model.setEclipseStartTime("2015-07-07 14:38:03.531"); InputStream stream = JVMProblemDetectorTest.class.getClassLoader().getResourceAsStream("/resources/log2.txt"); Assert.assertNotNull(stream); JVMProblemLogUtil.readLogFile(model, stream); Assert.assertTrue(model.getStructure().getUnresolvedModules().size()==0); } @Test public void testTwoSessionsDateAfter() throws ParseException{ JVMProblemModel model = new JVMProblemModel(); model.setEclipseStartTime("2015-07-07 15:38:03.531"); InputStream stream = JVMProblemDetectorTest.class.getClassLoader().getResourceAsStream("/resources/log2.txt"); Assert.assertNotNull(stream); JVMProblemLogUtil.readLogFile(model, stream); Assert.assertTrue(model.getStructure().getUnresolvedModules().size()==0); } private List<UnresolvedModule> getUnresolvedModules(){ JVMProblemModel model = new JVMProblemModel(); UnresolvedStructure uresolvedStructure = model.getStructure(); ArrayList<String> list = new ArrayList<String>(); list.add("org.jboss.tools.foundation.checkup.test"); uresolvedStructure.addRequieredJava("org.jboss.tools.foundation.checkup.testplugin", list, "JavaSE", "1.9"); List<UnresolvedModule> modules = uresolvedStructure.getUnresolvedModules(); Assert.assertNotNull(modules); return modules; } private List<UnresolvedClass> getUnresolvedClasses(){ JVMProblemModel model = new JVMProblemModel(); UnresolvedStructure uresolvedStructure = model.getStructure(); uresolvedStructure.addUnresolvedClass("org/jboss/tools/usage/event/UsageEventType", "1.9"); List<UnresolvedClass> modules = uresolvedStructure.getUnresolvedClasses(); Assert.assertNotNull(modules); return modules; } }