tracefw/tracecompiler/test/src/FixedIdDefinitionsTest.java
changeset 56 aa2539c91954
parent 54 a151135b0cf9
child 60 e54443a6878c
child 62 1c2bb2fc7c87
--- a/tracefw/tracecompiler/test/src/FixedIdDefinitionsTest.java	Wed Sep 29 17:45:35 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,597 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- *
- * JUnit tests for fixed_id.definitions file
- *
- */
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Writer;
-
-import junit.framework.TestCase;
-
-import org.junit.Test;
-
-import com.nokia.tracecompiler.file.FileUtils;
-import com.nokia.tracecompiler.source.SourceDocumentFactory;
-
-public class FixedIdDefinitionsTest extends TestCase {
-
-	/**
-	 * EMMA output prefix
-	 */
-	private static final String EMMA_OUTPUT_PREFIX = "EMMA: "; //$NON-NLS-1$
-	
-	/**
-	 * Fixed id definitions test app took note prefix
-	 */
-	private static final String FIXED_ID_DEFINITIONS_TEST_APP_TOOK_NOTE_PREFIX = "FixedIdDefinitionsTestApp took"; //$NON-NLS-1$
-
-	/**
-	 * UID3 of FixedIdDefinitionsTestApp
-	 */
-	private static final String FIXED_ID_DEFINITIONS_TEST_APP_UID3 = "E8576D92"; //$NON-NLS-1$
-
-	/**
-	 * txt extension
-	 */
-	private static final String TXT_EXTENSION = ".txt"; //$NON-NLS-1$
-
-	/**
-	 * Reference fid file name prefix
-	 */
-	private static final String REFERENCE_FID_FILE_NAME_PREFIX = "reference_fid_file_"; //$NON-NLS-1$
-
-	/**
-	 * Reference fid file name prefix
-	 */
-	private static final String REFERENCE_TC_OUTPUT_NAME_PREFIX = "reference_tc_output_"; //$NON-NLS-1$	
-
-	/**
-	 * data directory name
-	 */
-	private static final String DATA_DIRECTORY = "data"; //$NON-NLS-1$
-
-	/**
-	 * traces directory name
-	 */
-	private static final String TRACES_DIRECTORY = "traces"; //$NON-NLS-1$
-
-	/**
-	 * fixed_id.definitions file name
-	 */
-	private static final String FIXED_ID_DEFINITIONS_FILE_NAME = "fixed_id.definitions"; //$NON-NLS-1$
-
-	/**
-	 * Line comment tag
-	 */
-	private static final String LINE_COMMENT_TAG = "//"; //$NON-NLS-1$
-
-	/**
-	 * TRACE_USED_IN_TEST_CASE tag
-	 */
-	private static final String TRACE_USED_IN_TEST_CASE_TAG = "TRACE_USED_IN_TEST_CASE"; //$NON-NLS-1$
-
-	/**
-	 * Error text prefix
-	 */
-	private static final String ERROR_TEXT_PREFIX = "Error: "; //$NON-NLS-1$
-
-	/**
-	 * src directory name
-	 */
-	private static final String SRC_DIRECTORY = "src"; //$NON-NLS-1$
-
-	/**
-	 * .cpp extension
-	 */
-	private static final String CPP_EXTENSION = ".cpp"; //$NON-NLS-1$
-
-	/**
-	 * FixedIdDefinitionsTestApp
-	 */
-	private static final String FIXED_ID_DEFINITIONS_TEST_APP = "FixedIdDefinitionsTestApp"; //$NON-NLS-1$
-
-	/**
-	 * Variable for epocroot
-	 */
-	String e32;
-
-	/**
-	 * Path to FixedIdDefinitionsTestApp application
-	 */
-	String fixedIdDefinitionsTestAppPath;
-
-	/**
-	 * Process builder
-	 */
-	ProcessBuilder pb = null;
-
-	/**
-	 * Compiler path
-	 */
-	File compilerPath = null;
-
-	/**
-	 * Line separator
-	 */
-	String lineSeparator;
-
-	/**
-	 * Source file name with full path
-	 */
-	String sourceFileNameWithFullPath;
-
-	/**
-	 * fixed_id.definitions file name with full path
-	 */
-	String fixedIdDefinitionsFileNameWithFullPath;
-
-	/**
-	 * SourceDocumentFactory
-	 */
-	SourceDocumentFactory factory = null;
-
-	public static void main(String[] args) {
-		org.junit.runner.JUnitCore.main(FixedIdDefinitionsTest.class.getName());
-	}
-
-	/**
-	 * setup
-	 */
-	@Test
-	public void setUp() {
-		System.out.println("Setup class variables"); //$NON-NLS-1$
-
-		e32 = System.getenv("EPOCROOT"); //$NON-NLS-1$
-
-		if (!e32.endsWith(File.separator)) {
-			e32 += File.separator;
-		}
-
-		fixedIdDefinitionsTestAppPath = e32 + "testdata" + File.separator //$NON-NLS-1$
-				+ FIXED_ID_DEFINITIONS_TEST_APP + File.separator;
-				
-		// These EMMA flags are added, because of EMMA reporting in Hudson
-		String emmaOutputFileFlag = "-Demma.coverage.out.file=" + e32 + "testdata" + File.separator + "reports" + File.separator + "emma" + File.separator + "coverage.emma";
-		String emmaOutputMergeFlag = "-Demma.coverage.out.merge=true";
-
-		pb = new ProcessBuilder("java", emmaOutputFileFlag, emmaOutputMergeFlag, "-classpath", ".", //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-				"com.nokia.tracecompiler.TraceCompiler", FIXED_ID_DEFINITIONS_TEST_APP_UID3, //$NON-NLS-1$
-				FIXED_ID_DEFINITIONS_TEST_APP, fixedIdDefinitionsTestAppPath
-						+ "group" + File.separator //$NON-NLS-1$
-						+ FIXED_ID_DEFINITIONS_TEST_APP + ".mmp", //$NON-NLS-1$
-				fixedIdDefinitionsTestAppPath + SRC_DIRECTORY + File.separator
-						+ FIXED_ID_DEFINITIONS_TEST_APP + CPP_EXTENSION);
-
-		compilerPath = new File(e32 + "epoc32" + File.separator + "tools" //$NON-NLS-1$//$NON-NLS-2$
-				+ File.separator + "tracecompiler" + File.separator); //$NON-NLS-1$
-
-		lineSeparator = System.getProperty("line.separator"); //$NON-NLS-1$
-
-		sourceFileNameWithFullPath = fixedIdDefinitionsTestAppPath
-				+ SRC_DIRECTORY + File.separator
-				+ FIXED_ID_DEFINITIONS_TEST_APP + CPP_EXTENSION;
-
-		fixedIdDefinitionsFileNameWithFullPath = fixedIdDefinitionsTestAppPath
-				+ TRACES_DIRECTORY + File.separator
-				+ FIXED_ID_DEFINITIONS_FILE_NAME;
-	}
-
-	/**
-	 * Check if fixed id file is created correctly when it doesn't already exist
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_1() {
-		int testCaseNumber = 1;
-		System.out
-				.println("*** Check if fixed id file is created correctly when it doesn't already exist ***"); //$NON-NLS-1$
-		executeTestCase(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check new trace points are assigned values correctly (i.e. existing ones
-	 * don't change)
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_2() {
-		int testCaseNumber = 2;
-		System.out
-				.println("*** Check new trace points are assigned values correctly (i.e. existing ones don't change) ***"); //$NON-NLS-1$
-		executeTestCase(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check removed trace points / user-defined groups are obsoleted correctly
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_3() {
-		int testCaseNumber = 3;
-		System.out
-				.println("*** Check removed trace points / user-defined groups are obsoleted correctly ***"); //$NON-NLS-1$
-		executeTestCase(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check that adding a trace point with an obsoleted name is given a new
-	 * value.
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_4() {
-		int testCaseNumber = 4;
-		System.out
-				.println("*** Check that adding a trace point with an obsoleted name is given a new value. ***"); //$NON-NLS-1$
-		executeTestCase(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check that obsoleting all trace points in a component that refer to a
-	 * common group id (e.g. TRACE_FLOW) does NOT mark group as obsolete
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_5() {
-		int testCaseNumber = 5;
-		System.out
-				.println("*** Check that obsoleting all trace points in a component that refer to a common group id (e.g. TRACE_FLOW) does NOT mark group as obsolete ***"); //$NON-NLS-1$
-		executeTestCase(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check that repeatedly obsoleting a trace point does not mess
-	 * TraceCompiler.
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_6() {
-		int testCaseNumber = 6;
-		int subTestNumber = 1;
-		System.out
-				.println("*** Check that repeatedly obsoleting a trace point does not mess TraceCompiler. ***"); //$NON-NLS-1$
-		int numberOfSubTests = 4;
-		while (subTestNumber < numberOfSubTests) {
-			executeTestCase(testCaseNumber, subTestNumber);
-			subTestNumber++;
-		}
-	}
-
-	/**
-	 * Check that repeatedly changing group of the trace point does not mess
-	 * TraceCompiler.
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_7() {
-		int testCaseNumber = 7;
-		int subTestNumber = 1;
-		System.out
-				.println("*** Check that repeatedly changing group of the trace point does not mess TraceCompiler. ***"); //$NON-NLS-1$
-		int numberOfSubTests = 3;
-		while (subTestNumber < numberOfSubTests) {
-			executeTestCase(testCaseNumber, subTestNumber);
-			subTestNumber++;
-		}
-	}
-
-	/**
-	 * Check that a OSTv1 common group id values results in new fixed id file.
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_8() {
-		int testCaseNumber = 8;
-		System.out
-				.println("*** Check that a OSTv1 common group id values results in new fixed id file. ***"); //$NON-NLS-1$
-		executeTestCaseWithTraceCompilerOutputCheck(testCaseNumber, 0);
-	}
-
-	/**
-	 * Check that a OSTv1 user group id values results in new fixed id file.
-	 */
-	@Test
-	public void testFixedIdDefinitionsFunctionalityTestCase_9() {
-		int testCaseNumber = 9;
-		System.out
-				.println("*** Check that a OSTv1 user group id values results in new fixed id file. ***"); //$NON-NLS-1$
-		executeTestCaseWithTraceCompilerOutputCheck(testCaseNumber, 0);
-	}
-
-	/**
-	 * Sub function to execute test case with TraceCompiler output check
-	 * 
-	 * @param testCaseNumber
-	 *            Test case number
-	 */
-	private void executeTestCaseWithTraceCompilerOutputCheck(
-			int testCaseNumber, int subTestNumber) {
-		System.out
-				.println("Start to execute test case with TraceCompiler output check."); //$NON-NLS-1$
-		modifyFixedIdDefinitionsTestApp(testCaseNumber, subTestNumber);
-		InputStream traceCompilerOutput = runTraceCompiler();
-		verifyTraceCompilerOutput(testCaseNumber, subTestNumber,
-				traceCompilerOutput);
-		verifyTestResults(testCaseNumber, subTestNumber);
-	}
-
-	/**
-	 * Sub function to execute test case
-	 * 
-	 * @param testCaseNumber
-	 *            Test case number
-	 */
-	private void executeTestCase(int testCaseNumber, int subTestNumber) {
-		System.out.println("Start to execute test case."); //$NON-NLS-1$
-		modifyFixedIdDefinitionsTestApp(testCaseNumber, subTestNumber);
-		if (testCaseNumber > 1) {
-			initializeFixedIDDefinitionsFile(testCaseNumber, subTestNumber);
-		}
-		runTraceCompiler();
-		verifyTestResults(testCaseNumber, subTestNumber);
-	}
-
-	/**
-	 * Initialize fixed_id.defitions file
-	 * 
-	 * @param testCaseNumber
-	 *            Test case number
-	 */
-	private void initializeFixedIDDefinitionsFile(int testCaseNumber,
-			int subTestNumber) {
-		System.out.println("Initialize fixed_id.defitions file"); //$NON-NLS-1$
-		String refesenceFileName;
-		if (subTestNumber == 0) {
-			refesenceFileName = REFERENCE_FID_FILE_NAME_PREFIX
-					+ (testCaseNumber - 1);
-		} else {
-			refesenceFileName = REFERENCE_FID_FILE_NAME_PREFIX + testCaseNumber
-					+ "_" + (subTestNumber - 1); //$NON-NLS-1$
-		}
-		refesenceFileName = refesenceFileName + TXT_EXTENSION;
-		String sourceFile = fixedIdDefinitionsTestAppPath + DATA_DIRECTORY
-				+ File.separator + refesenceFileName;
-		File source = new File(sourceFile);
-		File target = new File(fixedIdDefinitionsFileNameWithFullPath);
-		FileUtils.copyFile(source, target);
-	}
-
-	/**
-	 * Modify FixedIdDefinitionsTestApp application source code
-	 * 
-	 * @param testCaseNumber
-	 *            test case number
-	 */
-	private void modifyFixedIdDefinitionsTestApp(int testCaseNumber,
-			int subTestNumber) {
-		System.out
-				.println("Modify FixedIdDefinitionsTestApp application source code"); //$NON-NLS-1$
-		try {
-			StringBuilder modifiedContents = new StringBuilder();
-			File sourceFile = new File(sourceFileNameWithFullPath);
-			BufferedReader input = new BufferedReader(
-					new FileReader(sourceFile));
-			String line;
-			String currentTestCaseTag = TRACE_USED_IN_TEST_CASE_TAG
-					+ "_" + testCaseNumber; //$NON-NLS-1$
-			if (subTestNumber != 0) {
-				currentTestCaseTag = currentTestCaseTag + "_" + subTestNumber; //$NON-NLS-1$
-			}
-			while ((line = input.readLine()) != null) {
-				if (line.indexOf(TRACE_USED_IN_TEST_CASE_TAG) != -1) {
-					if (line.indexOf(currentTestCaseTag) != -1) {
-						if (line.startsWith(LINE_COMMENT_TAG)) {
-							line = line.substring(LINE_COMMENT_TAG.length());
-						}
-					} else {
-						if (!line.startsWith(LINE_COMMENT_TAG)) {
-							line = LINE_COMMENT_TAG + line;
-						}
-					}
-				}
-				modifiedContents.append(line);
-				modifiedContents.append(lineSeparator);
-			}
-			input.close();
-			Writer sourceFileWriter = new BufferedWriter(new FileWriter(
-					sourceFileNameWithFullPath));
-			sourceFileWriter.write(modifiedContents.toString());
-			sourceFileWriter.close();
-
-			if (testCaseNumber == 8 || testCaseNumber == 9) {
-				String fileContent = "#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt." + lineSeparator; //$NON-NLS-1$
-
-				if (testCaseNumber == 8) {
-					fileContent += "[GROUP]TRACE_FLOW=0x7" + lineSeparator //$NON-NLS-1$
-							+ "[TRACE]TRACE_FLOW[0x7]_TRACE1=0x1"; //$NON-NLS-1$
-				} else if (testCaseNumber == 9) {
-					fileContent += "[GROUP]MY_GROUP=0x70" + lineSeparator //$NON-NLS-1$
-							+ "[TRACE]MY_GROUP [0x70]_TRACE1=0x1"; //$NON-NLS-1$
-				}
-				Writer fixedIDDefinitionsFileWriter = new BufferedWriter(
-						new FileWriter(fixedIdDefinitionsFileNameWithFullPath));
-				fixedIDDefinitionsFileWriter.write(fileContent);
-				fixedIDDefinitionsFileWriter.close();
-			}
-
-		} catch (Exception e) {
-			System.err.println(ERROR_TEXT_PREFIX + e.getMessage());
-			fail();
-		}
-	}
-
-	/**
-	 * Run TraceCompiler
-	 */
-	private InputStream runTraceCompiler() {
-		System.out.println("Run TraceCompiler"); //$NON-NLS-1$
-		InputStream inp = null;
-		pb.directory(compilerPath);
-		pb.redirectErrorStream(true);
-		// start the compiler
-		try {
-			Process p = pb.start();
-			p.waitFor();
-			inp = p.getInputStream();
-		} catch (Exception e) {// Catch exception if any
-			System.err.println(ERROR_TEXT_PREFIX + e.getMessage());
-			fail();
-		}
-
-		return inp;
-	}
-
-	/**
-	 * Verify TraceCompiler output
-	 * 
-	 * @param traceCompilerOutput
-	 *            TraceCompiler output
-	 */
-	private void verifyTraceCompilerOutput(int testCaseNumber,
-			int subTestNumber, InputStream traceCompilerOutput) {
-		System.out.println("Verify TraceCompiler output"); //$NON-NLS-1$
-
-		String refesenceFileName = REFERENCE_TC_OUTPUT_NAME_PREFIX
-				+ testCaseNumber;
-		if (subTestNumber != 0) {
-			refesenceFileName = refesenceFileName + "_" + subTestNumber; //$NON-NLS-1$
-		}
-		refesenceFileName = refesenceFileName + TXT_EXTENSION;
-
-		try {
-			FileInputStream fstreamExpected = new FileInputStream(
-					fixedIdDefinitionsTestAppPath + DATA_DIRECTORY
-							+ File.separator + refesenceFileName);
-			compareExpectedAndActual(fstreamExpected, traceCompilerOutput);
-		} catch (FileNotFoundException e) {
-			System.err.println(ERROR_TEXT_PREFIX + e.getMessage());
-			fail();
-		}
-	}
-
-	/**
-	 * Verify test result
-	 * 
-	 * @param testCaseNumber
-	 *            test case number
-	 */
-	private void verifyTestResults(int testCaseNumber, int subTestNumber) {
-		System.out.println("Verify test result"); //$NON-NLS-1$
-		String refesenceFileName = REFERENCE_FID_FILE_NAME_PREFIX
-				+ testCaseNumber;
-
-		if (subTestNumber != 0) {
-			refesenceFileName = refesenceFileName + "_" + subTestNumber; //$NON-NLS-1$
-		}
-
-		refesenceFileName = refesenceFileName + TXT_EXTENSION;
-		try {
-			FileInputStream fstreamExpected = new FileInputStream(
-					fixedIdDefinitionsTestAppPath + DATA_DIRECTORY
-							+ File.separator + refesenceFileName);
-			FileInputStream fstreamActual = new FileInputStream(
-					fixedIdDefinitionsFileNameWithFullPath);
-			compareExpectedAndActual(fstreamExpected, fstreamActual);
-		} catch (FileNotFoundException e) {
-			System.err.println(ERROR_TEXT_PREFIX + e.getMessage());
-			fail();
-		}
-	}
-
-	/**
-	 * Compare expected and actual input streams
-	 * 
-	 * @param streamExpected
-	 *            Expected input stream
-	 * @param streamActual
-	 *            Actual input stream
-	 */
-	private void compareExpectedAndActual(InputStream streamExpected,
-			InputStream streamActual) {
-		System.out.println("Compare expected and actual input streams"); //$NON-NLS-1$
-		try {
-			// Get the objects of DataInputStream
-			DataInputStream inExpected = new DataInputStream(streamExpected);
-			DataInputStream inActual = new DataInputStream(streamActual);
-			BufferedReader brExpected = new BufferedReader(
-					new InputStreamReader(inExpected));
-			BufferedReader brActual = new BufferedReader(new InputStreamReader(
-					inActual));
-
-			String strLineExpected;
-			String strLineActual;
-			int i = 1;
-			// compare the expected and actual input streams
-			while (((strLineExpected = brExpected.readLine()) != null)
-					&& (((strLineActual = brActual.readLine()) != null))) {
-
-				// Skip EMMA outputs if those exists
-				if (strLineActual.trim().startsWith(EMMA_OUTPUT_PREFIX)) {
-						strLineActual = brActual.readLine();
-						if (strLineActual == null) {
-							break;
-						}
-				}
-
-				// Following check skips different TraceCompiler execution time
-				// values
-				if (strLineExpected
-						.indexOf(FIXED_ID_DEFINITIONS_TEST_APP_TOOK_NOTE_PREFIX) != -1
-						&& strLineActual
-								.indexOf(FIXED_ID_DEFINITIONS_TEST_APP_TOOK_NOTE_PREFIX) != -1) {
-					strLineActual = strLineActual.trim().substring(
-							0,
-							FIXED_ID_DEFINITIONS_TEST_APP_TOOK_NOTE_PREFIX
-									.length());
-
-				}
-				assertTrue(ERROR_TEXT_PREFIX + "Line \"" + strLineActual //$NON-NLS-1$
-						+ "\" does not match to \"" + strLineExpected + "\"", //$NON-NLS-1$ //$NON-NLS-2$
-						strLineExpected.compareTo(strLineActual) == 0);
-				i++;
-			}
-			
-			// Check that actual file does not contain any extra lines, it could be that there are some EMMA outputs and those are ok
-			while ((strLineActual = brActual.readLine()) != null) {
-				assertTrue(
-						ERROR_TEXT_PREFIX
-								+ "Actual file does contain extra lines", strLineActual.trim().startsWith(EMMA_OUTPUT_PREFIX)); //$NON-NLS-1$				
-			}
-			
-			// never entered loop therefore there actual file was empty or
-			// missing
-			assertTrue(ERROR_TEXT_PREFIX + "Actual file was empty or missing", //$NON-NLS-1$
-					i > 0);
-
-			inExpected.close();
-			inActual.close();
-		} catch (Exception e) {
-			System.err.println(ERROR_TEXT_PREFIX + e.getMessage());
-			fail();
-		}
-	}
-
-	/**
-	 * tearDown
-	 */
-	@Test
-	public void tearDown() {
-		System.out.println("Comment out all trace points in FixedIdDefinitionsTestApp"); //$NON-NLS-1$
-		modifyFixedIdDefinitionsTestApp(0, 0);
-	}
-}