secureswitools/swianalysistoolkit/test/tchainvalidity/testchainvalidity.pl
author Simon Howkins <simonh@symbian.org>
Mon, 22 Nov 2010 12:04:39 +0000
branchRCL_3
changeset 84 e6c5e34cd9b9
parent 0 ba25891c3a9e
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

#
# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
# All rights reserved.
# This component and the accompanying materials are made available
# under the terms of the License "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: 
# Perl script that test Dumpchainvaliditytoool with different ranges
#

use File::Basename;
my $scriptdir= dirname $0;
print "Changing dir to $scriptdir\n";
chdir $scriptdir;


$logFile = "\\epoc32\\winscw\\c\\dumpchainvalidity_test.txt";
use File::Copy;
use Cwd;
use File::Find ;

#
#Function to write log into file
#
sub WriteLog 
	{
	my ($log) = @_;
	unless( open($fh, ">> $logFile")) 
		{
		printf STDERR "Can\'t open $logfile:$!\n";
		return;
		}
	printf $fh $log;
	printf $log;
	close $fh;
	}

sub chainvalidity 
	{
	my ($pkgfile) = @_[0];
	my ($expectedResult) = @_[1];
	my ($outputLog) = @_[2];
	$outputLog =~ s/\.log//;
	$neededfolder="";
	$neededfile="";
	@retval = system("DumpChainValidityTool.exe $pkgfile> $outputLog.log");
	$logMsg = sprintf "Expected code:%5d   result Code:%5d\n", $expectedResult, $?;
	WriteLog( $logMsg);
	$NumberOfTests++;
	if( $? == $expectedResult) 
	{
	sleep(2);
	my $res=`diff "$outputLog.out" "$outputLog.log"`;
	if(length($res) == 0)
		{
		$NumberOfPassed++;
		WriteLog("Passed\n\n");
		}
	else
		{
		$NumberOfFailed++;
		WriteLog("Failed: Files $outputLog.out and $outputLog.log are not matched\n\n");
		WriteLog("Failed\n\n");
		}
	}
	else
		{
		$NumberOfFailed++;
		WriteLog("Failed\n\n");
		}
	unlink("$outputLog.log");

}


unlink($logFile);
WriteLog("DumpChainValidityTool test.\n\n");

#
# Counters for results
#
$NumberOfTests  = 0;
$NUmberOfPassed = 0;
$NumberOfFailed = 0;

#
# Array of contents of tests and expected results
#
#                file name,   					expected , expected log,            Title
#								result     message
#               ---------------------------------------------------------------------------------------------------- 
@TestItems = (	["data\\onechain.sis data\\swicertstore.dat"		,0,    , "Created",		"Test for chainvalidity with one valid chain", "chainvalidity-output\\onechain.log"],
		["data\\somevalidchain.sis data\\swicertstore.dat"		,0,    , "Created",		"Test for chainvalidity with some valid chains", "chainvalidity-output\\somevalidchain.log"],
		["data\\multichain_allValid.sis data\\swicertstore.dat"	,0,    , "Created",		"Test for chainvalidity with all chains valid", "chainvalidity-output\\allvalidchain.log"],
		["data\\selfsigned.SIS data\\swicertstore.dat"		,0,    , "Created",		"Test for SIS file signed with a selfsigned certificate", "chainvalidity-output\\selfsigned.log"],
		["data\\simple_devsimplesigned.SIS data\\swicertstore.dat"	,0,    , "Created",		"Test for SIS file signed with a developer certificate", "chainvalidity-output\\devcert2.log"],
		["data\\unsigned.sis data\\swicertstore.dat"		,0,    , "Created",		"Test for chainvalidity with sis file having no chain", "chainvalidity-output\\unsigned.log"],
		["data\\multichain_allValid.sis data\\AllMandatory.dat"	,0,    , "Created",	"Test for chainvalidity with sis files not signed by all the mandatory certificates present in certstore", "chainvalidity-output\\missing_mandatory.log"],
		["data\\multichain_allValid.sis data\\Mandatory.dat"	,0,    , "Created",	"Test for chainvalidity with sis files not signed by all the mandatory certificates present in certstore", "chainvalidity-output\\mandatory.log"],
		["data\\multichain_allValid.sis data\\corrupted.dat"	,1792,    , "File format error",	"Test for chainvalidity with corrupted certstore", "chainvalidity-output\\corrupteddat.log"],
		["data\\corrupted.sis data\\swicertstore.dat"		,1536,    , "File format error",	"Test for chainvalidity with corrupted sis file", "chainvalidity-output\\corruptedsis.log"],
	     );




#
# Do test for each elements of TestItems array
#
for my $Test ( @TestItems )
	{
	$testid = sprintf "SEC-SWI-I-CHAINVAL-00%d\n",$NumberOfTests+1;
	WriteLog($testid);
	$logMsg = sprintf "%s\n", $Test->[3];
	WriteLog($logMsg);
	chainvalidity($Test->[0], $Test->[1],$Test->[4]);
	}

opendir(DIR, ".\\Chain");
while (defined($files=readdir(DIR)))
	{
	$dirname="chain\\";
	$files =~ s/\.pem//;
	$dirname.= $files;
	if(-e "$dirname.pem")
		{
		unlink("$dirname.pem");
		}
	close(DIR);
	}

$dirpath = "Chain";
rmdir($dirpath);

#
# Display the result
#
WriteLog("\n\nTests completed OK\n");
WriteLog(sprintf "Run: %d\n", $NumberOfTests );
WriteLog(sprintf "Passed: %d\n", $NumberOfPassed );
WriteLog(sprintf "%d tests failed out of %d\n", $NumberOfFailed, $NumberOfTests );