| /******************************************************************************* |
| * Copyright (c) 2004, 2007 Boeing. |
| * All rights reserved. This program and the accompanying materials |
| * are 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: |
| * Boeing - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.osee.ote.ui.define.reports; |
| |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.logging.Level; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; |
| import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; |
| import org.eclipse.osee.framework.logging.OseeLog; |
| import org.eclipse.osee.ote.define.artifacts.TestRunOperator; |
| import org.eclipse.osee.ote.ui.define.OteUiDefinePlugin; |
| |
| /** |
| * @author Roberto E. Escobar |
| */ |
| public class HighLevelSummary implements ITestRunReport { |
| private static final String[] HEADER = new String[] { |
| CoreAttributeTypes.Partition.getName(), |
| CoreAttributeTypes.Subsystem.getName(), |
| "ScriptCount", |
| "RunTime Issues", |
| "Scripts with Failures", |
| "Scripts Pass"}; |
| private final Map<String, CollectedData> dataMap; |
| |
| public HighLevelSummary() { |
| this.dataMap = new HashMap<>(); |
| } |
| |
| @Override |
| public void gatherData(IProgressMonitor monitor, TestRunOperator... items) throws Exception { |
| clear(); |
| for (int index = 0; index < items.length; index++) { |
| TestRunOperator operator = items[index]; |
| monitor.subTask(String.format("Processing [%s of%s]", index + 1, items.length)); |
| String partition = operator.getPartition(); |
| String subsystem = operator.getSubsystem(); |
| String key = String.format("%s:%s", partition, subsystem); |
| CollectedData data = dataMap.get(key); |
| if (data == null) { |
| data = new CollectedData(partition, subsystem); |
| dataMap.put(key, data); |
| } |
| try { |
| processData(data, operator); |
| } catch (Exception ex) { |
| OseeLog.log(OteUiDefinePlugin.class, Level.SEVERE, ex); |
| } |
| if (monitor.isCanceled()) { |
| break; |
| } |
| } |
| } |
| |
| @Override |
| public String[][] getBody() { |
| int numRows = dataMap.size(); |
| List<String> keys = new ArrayList<>(dataMap.keySet()); |
| String[][] toReturn = new String[numRows][getHeader().length]; |
| for (int row = 0; row < numRows; row++) { |
| String key = keys.get(row); |
| CollectedData collectedData = dataMap.get(key); |
| toReturn[row] = addRow(collectedData); |
| } |
| return toReturn; |
| } |
| |
| private String[] addRow(CollectedData data) { |
| List<String> values = new ArrayList<>(); |
| values.add(data.getPartition()); |
| values.add(data.getSubsytem()); |
| values.add(Integer.toString(data.getScriptCount())); |
| values.add(Integer.toString(data.getRunTimeIssues())); |
| values.add(Integer.toString(data.getScriptWithFailures())); |
| values.add(Integer.toString(data.getScriptPassed())); |
| return values.toArray(new String[values.size()]); |
| } |
| |
| @Override |
| public String[] getHeader() { |
| return HEADER; |
| } |
| |
| @Override |
| public String getTitle() { |
| return "High Level Test Run Summary"; |
| } |
| |
| private void processData(CollectedData data, TestRunOperator operator) throws OseeCoreException { |
| data.incrementScriptCount(); |
| |
| int failed = operator.getTestPointsFailed(); |
| int passed = operator.getTestPointsPassed(); |
| int total = operator.getTotalTestPoints(); |
| boolean wasAborted = operator.wasAborted(); |
| |
| if (wasAborted) { |
| data.incrementRunTimeIssues(); |
| } else if (total == 0) { |
| data.incrementRunTimeIssues(); |
| } else if (failed > 0) { |
| data.incrementScriptWithFailures(); |
| } else if (passed == total && failed == 0) { |
| data.incrementScriptPassed(); |
| } |
| } |
| |
| private final class CollectedData { |
| private final String partition; |
| private final String subsytem; |
| private int scriptCount; |
| private int runTimeIssues; |
| private int scriptWithFailures; |
| private int scriptPassed; |
| |
| public CollectedData(String partition, String subsytem) { |
| this.partition = partition; |
| this.subsytem = subsytem; |
| this.scriptCount = 0; |
| this.runTimeIssues = 0; |
| this.scriptWithFailures = 0; |
| this.scriptPassed = 0; |
| } |
| |
| public String getPartition() { |
| return partition; |
| } |
| |
| public String getSubsytem() { |
| return subsytem; |
| } |
| |
| public int getScriptCount() { |
| return scriptCount; |
| } |
| |
| public int getRunTimeIssues() { |
| return runTimeIssues; |
| } |
| |
| public int getScriptWithFailures() { |
| return scriptWithFailures; |
| } |
| |
| public int getScriptPassed() { |
| return scriptPassed; |
| } |
| |
| public void incrementScriptCount() { |
| this.scriptCount++; |
| } |
| |
| public void incrementRunTimeIssues() { |
| this.runTimeIssues++; |
| } |
| |
| public void incrementScriptWithFailures() { |
| this.scriptWithFailures++; |
| } |
| |
| public void incrementScriptPassed() { |
| this.scriptPassed++; |
| } |
| } |
| |
| @Override |
| public String getDescription() { |
| return "Generates a summary report of all test runs."; |
| } |
| |
| @Override |
| public void clear() { |
| this.dataMap.clear(); |
| } |
| |
| } |