# HG changeset patch
# User darios@symbian.org
# Date 1243614047 -3600
# Node ID d5964b46ccafcbecb90e9618e085f3ffa7fcbaaf
# Parent 56e7098e1ace22d3bb5d4cf300db7c31a558afd2# Parent 18300635256d56c60a487776eb6dc33d73b362b0
Catchup from default config
diff -r 56e7098e1ace -r d5964b46ccaf common/build.xml
--- a/common/build.xml Wed May 20 14:26:55 2009 +0100
+++ b/common/build.xml Fri May 29 17:20:47 2009 +0100
@@ -1,5 +1,5 @@
-
+
@@ -28,23 +28,17 @@
-
-
-
-
+
-
-
+
+
-
-
+
[SF-PREP]
@@ -141,15 +135,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
@@ -158,115 +168,143 @@
-
- [SF-POSTBUILD]
+
+ [SF-POSTBUILD]
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
[SF-BUILD-NOPREP]
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
@@ -280,29 +318,28 @@
-
-
-
- ant: antProperties()
- data: csv(${sf.project.location}/${sf.spec.sourcesync.sourcespecfile}, {separator:','})
-
-
-
+
+
+
+ ant: antProperties()
+ data: csv(${sf.project.location}/${sf.spec.sourcesync.sourcespecfile}, {separator:','})
+
+
+
-
-
- ant: antProperties()
- config: csv(${build.drive}/output/logs/BOM/config.csv,{separator:',',headers:[loc,dst,rev]})
- project: csv(${build.drive}/output/logs/BOM/project.csv,{separator:',',headers:[loc,dst,rev]})
- baseline: slicedText(${build.drive}/output/logs/BOM/baseline.txt,{trim})
- sources: csv(${build.drive}/output/logs/BOM/sources.csv,{separator:',',headers:[loc,dst,rev]})
-
-
-
+
+
+ ant: antProperties()
+ config: csv(${build.drive}/output/logs/BOM/config.csv,{separator:',',headers:[loc,dst,rev]})
+ project: csv(${build.drive}/output/logs/BOM/project.csv,{separator:',',headers:[loc,dst,rev]})
+ baseline: slicedText(${build.drive}/output/logs/BOM/baseline.txt,{trim})
+ sources: csv(${build.drive}/output/logs/BOM/sources.csv,{separator:',',headers:[loc,dst,rev]})
+
+
@@ -323,6 +360,159 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff -r 56e7098e1ace -r d5964b46ccaf common/common_props.ant.xml
--- a/common/common_props.ant.xml Wed May 20 14:26:55 2009 +0100
+++ b/common/common_props.ant.xml Fri May 29 17:20:47 2009 +0100
@@ -12,11 +12,10 @@
-
+
-
-
+
@@ -46,8 +45,8 @@
-
-
+
+
@@ -63,17 +62,22 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 56e7098e1ace -r d5964b46ccaf common/smoketest/ats3_testdrop.pl
--- a/common/smoketest/ats3_testdrop.pl Wed May 20 14:26:55 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-#!/usr/bin/perl
-
-#curl "http://sym-build01:8080/ats3/XTestRunExecute.do?username=admin&password=admin&testrunpath=D:\smoketests\test_drops\9.zip
-use strict;
-use Getopt::Long;
-use File::Copy;
-use File::Spec;
-
-my $username = "admin";
-my $password = "admin";
-my $host;
-my $schedule;
-my $host_drop_path;
-my $local_drop_path;
-my $local_test_pkg;
-my $help;
-my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null";
-
-sub usage($);
-sub help();
-sub usage_error();
-
-my %optmap = ( 'host' => \$host,
- 'local-test-pkg' => \$local_test_pkg,
- 'host-drop-path' => \$host_drop_path,
- 'local-drop-path' =>\$local_drop_path,
- 'username' => \$username,
- 'password' => \$password,
- 'schedule' => \$schedule,
- 'help' => \$help);
-
-GetOptions(\%optmap,
- 'host=s',
- 'local-test-pkg=s',
- 'host-drop-path=s',
- 'local-drop-path=s',
- 'username=s',
- 'password=s',
- 'schedule=s',
- 'help!')
- or usage_error();
-
-if ($help) {
- help();
-}
-
-usage_error(), unless (defined($host) && defined($local_test_pkg) && defined($local_drop_path) && defined($host_drop_path));
-
-my $curl_version = $^O =~ /^MSWin/ ? `curl --version 1> $dev_null 2>&1` : `curl --version 1> $dev_null 2>&1`;
-die("Need program \"curl\". Not found"), if ($?);
-die("Test drop path \"$local_drop_path\" not found"), unless ( -d "$local_drop_path");
-
-$host .= ":8080", unless ($host =~ /:\d+$/);
-
-my ($vol,$dir,$pkg);
-my $local_test_drop;
-my $host_test_drop;
-
-if ($local_test_pkg =~ /^\.\.\.(.+)/ ) {
- $pkg = $1;
- $local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
- die("Test package file \"$local_test_drop\" not found"), unless ( -f "$local_test_drop");
-}
-else {
- die("Test package file \"$local_test_pkg\" not found"), unless ( -f "$local_test_pkg");
- ($vol,$dir,$pkg) = File::Spec->splitpath($local_test_pkg);
- $local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
- if ( -f "$local_test_drop") {
- my $cmp_local_test_drop = $local_test_drop;
- my $cmp_local_test_pkg = $local_test_pkg;
- if ($^O =~ /^MSWin/) {
- $cmp_local_test_drop = lc($local_test_drop);
- $cmp_local_test_pkg = lc($local_test_pkg);
- }
- if ("$cmp_local_test_drop" eq "$cmp_local_test_pkg") {
- if (unlink($local_test_drop) == 0) {
- die("Can't delete stale test drop \"$local_test_drop\". $!");
- }
- else {
- print("A stale test drop \"$local_test_drop\" existed. Deleted\n");
- }
- }
- }
- copy("$local_test_pkg","$local_test_drop")
- or die("Cannot copy \"$local_test_pkg\" -> \"$local_test_drop\". $!");
-}
-$host_test_drop = File::Spec->catfile($host_drop_path,$pkg);
-my $url ="http://$host/ats3/XTestRunExecute.do?username=$username&password=$password&testrunpath=$host_test_drop";
-$url .= "&schedule=$schedule", if (defined($schedule));
-my $curl_cmd = "curl \"$url\"";
-system("$curl_cmd");
-die("\nTest drop failed: $!"), if ($?);
-print("\nTest drop done");
-
-exit 0;
-
-sub usage($)
-{
- my $error = shift;
- my $fh = $error == 0 ? *STDOUT : *STDERR;
- print $fh "ats3_testdrop.pl\n" .
- "Send a test drop to an ATS3 server for execution\n" .
- "usage:\n" .
- " ats3_testdrop.pl --help\n" .
- " ats3_testdrop.pl --host=HOSTNAME --local-test-pkg=PKGFILE --local-drop-path=LOCALPATH " .
- " --host-drop-path=HOSTPATH " .
- "[--username=ATS3USERNAME] [--password=ATS3PASSWORD] [--schedule=DD.MM.YYYY-HH:MM]\n" .
- "options:\n" .
- " --help Display this help and exit\n" .
- " --host=HOSTAME HOSTNAME is ATS3 server\n" .
- " --local-test-pkg=PKGFILE PKGFILE is the test package.\n" .
- " If PKGFILE begins "..." a filename in LOCALPATH is assumed\n" .
- " --local-drop-path=LOCALPATH Path to local directory where PKGFILE will be dropped\n" .
- " --host-drop-path=HOSTPATH Host directory that is mapped to LOCALPATH.\n" .
- " Must agree with the properties of the registered device that the test package nominates\n" .
- " --username=ATS3USERNAME ATS3 user to whome the test will belong. Default=admin\n" .
- " --password=ATS3PASSWORD Password of ATS3 user. Default=admin\n" .
- " --schedule=DD.MM.YYYY-HH:MM Date-time at which test is to run. Default=as soon as possible\n";
- exit $error;
-}
-
-sub help()
-{
- usage(0);
-}
-
-sub usage_error()
-{
- usage(1);
-}
-
-# EOF
-
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/smoketest/make_junction.pl
--- a/common/smoketest/make_junction.pl Wed May 20 14:26:55 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Getopt::Long;
-use File::Spec;
-
-my $link;
-my $target;
-my $help;
-my $force = 0;
-
-sub usage($);
-sub help();
-sub usage_error();
-
-my %optmap = ( 'link' => \$link,
- 'target' => \$target,
- 'force' => \$force,
- 'help' => \$help);
-
-GetOptions(\%optmap,
- 'link=s',
- 'target=s',
- 'force!',
- 'help!')
- or usage_error();
-
-if ($help) {
- help();
-}
-
-usage_error(), unless (defined($link) && defined($target));
-
-my $junction_help = `junction /?`;
-die("Need command \"junction\". Not found\n"), if ($junction_help =~ /is not recognised/);
-die("Directory \"$target\" not found\n"), unless -d "$target";
-
-my ($vol,$dir,$file) = File::Spec->splitpath($target);
-my @subst_lines = `subst`;
-
-foreach (@subst_lines) {
- my $line = $_;
- chomp($line);
- $line =~ /^(.:)\\: => (.*)$/;
- die("Cannot parse output of 'subst'. Bailing out confused."), unless (defined($1) and defined($2));
- my $subst_drive = $1;
- my $subst_targ = $2;
- if (lc($subst_drive) eq lc($vol)) {
- print("Target $target is in a substituted drive: $line\n");
- $target = File::Spec->catfile(($subst_targ,$dir),$file);
- print("Target $target will be used\n");
- last;
- }
-}
-
-
-if ( -e "$link") {
- print("\"$link\" already exists. ");
- if (!$force) {
- my $choice;
- while($choice ne 'y' and $choice ne 'n') {
- print "Delete? (y/n)? ";
- $choice = ;
- chomp($choice);
- $choice = lc($choice);
- }
- $force = $choice eq 'y';
- }
- if ($force) {
- system("junction -d \"$link\" > nul");
- if ($?) {
- die("Cannot delete \"$link\": $!\n");
- }
- else {
- print "Deleted \"$link\"\n";
- }
- }
-}
-
-system("junction \"$link\" \"$target\" > nul");
-if ($?) {
- die("Cannot cteate junction \"$link\" -> \"$target\": $!\n");
-}
-else {
- print("Created junction \"$link\" -> \"$target\"\n");
-}
-exit 0;
-
-sub usage($)
-{
- my $error = shift;
- my $fh = $error == 0 ? *STDOUT : *STDERR;
- print $fh "make_junction.pl\n" .
- "Create a Windows junction (a.k.a symbolic link)\n" .
- "usage:\n" .
- " make_junction.pl --help\n" .
- " make_junction.pl --link=LINKDIR --target=TARGDIR\n " .
- "options:\n" .
- " --help Display this help and exit\n" .
- " --link=LINKDIR LINKDIR specifies the junction to be created. Last component is the junction. The rest must exist\n" .
- " --target=TARGDIR TARGDIR is directory to which the junction will point.\n" .
- " If TARGDIR is in a substed drive, the real path will be used.\n";
- exit $error;
-}
-
-sub help()
-{
- usage(0);
-}
-
-sub usage_error()
-{
- usage(1);
-}
-
-# EOF
-
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/smoketest/smoke_test.ant.xml
--- a/common/smoketest/smoke_test.ant.xml Wed May 20 14:26:55 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-
-
-
-
- [SF-SMOKE-TEST]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/templates/source-spec.ant.xml.ftl
--- a/common/templates/source-spec.ant.xml.ftl Wed May 20 14:26:55 2009 +0100
+++ b/common/templates/source-spec.ant.xml.ftl Fri May 29 17:20:47 2009 +0100
@@ -3,6 +3,7 @@
<#assign fileset = "" />
<#assign sync_list = "" />
+<#assign bom_list = "" />
<#assign dollar = "$"/>
<#assign count = 0 />
@@ -28,6 +29,13 @@
+
+
+
+
+
+
+
@@ -47,9 +55,11 @@
-
+
+
<#assign fileset = "${fileset}" + "" />
- <#assign sync_list = "${sync_list}" + "\n"/>
+ <#assign sync_list = "${sync_list}" + "\n"/>
+ <#assign bom_list = "${bom_list}" + "\n"/>
<#assign count = count + 1 />
#list>
@@ -65,5 +75,8 @@
${sync_list}
+
+ ${bom_list}
+
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/templates/zip.cfg.xml.ftl.template
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/templates/zip.cfg.xml.ftl.template Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/find_collisions.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/find_collisions.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,179 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# 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:
+# Symbian Foundation Ltd - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Adds info form a file to a CSV
+
+use strict;
+
+main();
+
+sub main()
+{
+ my $csvfile = shift @ARGV;
+ my $filelist = shift @ARGV;
+
+ if(! -e $csvfile)
+ {
+ die "cannot find $csvfile\n";
+ }
+
+ open(CSV,"<$csvfile") or die "Couldn't open $csvfile\n";
+ my $header = ;
+ $header =~ s/\n//;
+ print RESULTS $header.",status\n";
+ my @fields = split(',',$header);
+ my $targetindex = 0;
+ my $counter = 0;
+ my $bldinfindex = 0;
+ my $makefileindex = 0;
+ my $typeindex = 0;
+ my $extindex = 0;
+ my %failed;
+ my %bldinffiles;
+
+ my %targets;
+
+ foreach my $column (@fields)
+ {
+ if($column =~ m/target/)
+ {
+ $targetindex = $counter;
+ }
+ elsif($column =~ m/bldinf/)
+ {
+ $bldinfindex = $counter;
+ }
+ elsif($column =~ m/makefile/)
+ {
+ $makefileindex = $counter;
+ }
+ elsif($column =~ m/type/)
+ {
+ $typeindex = $counter;
+ }
+ elsif($column =~ m/extension/)
+ {
+ $extindex = $counter;
+ }
+ ++$counter;
+ }
+# print "\ntarget:$targetindex\tbuildinf:$bldinfindex\n";
+ #header
+ my $resultsfile = $csvfile."_collisions.csv";
+ open(RESULTS, ">$resultsfile") or die "Coudn't open $resultsfile";
+
+ print RESULTS "Collision,target,extension,type,source1,source2\n";
+ while(my $line = )
+ {
+ $line =~ s/\n//;
+ @fields = split(',',$line);
+ my $target = $fields[$targetindex];
+ $target = lc($target);
+ my $makefile = $fields[$makefileindex];
+ my $bldinf = $fields[$bldinfindex];
+
+ if(defined $targets{$target})
+ {
+ my $currentmakefile = $targets{$target};
+ if($makefile eq "")
+ {
+ $makefile = $bldinf;
+ }
+ if (!($currentmakefile eq $makefile))
+ {
+ my $type = $fields[$typeindex]; #DODGY - smoe custom makefiles also clash with export headers...
+ my $ext = $fields[$extindex];
+ my $collision = "-";
+ if($type eq "export")
+ {
+ $collision = diffcollision($target,$currentmakefile,$makefile);
+ }
+ print RESULTS "$collision,$target,$ext,$type,$currentmakefile,$makefile\n";
+ }
+ }
+ else
+ {
+ if($makefile eq "")
+ {
+ $targets{$target} = $bldinf;
+ }
+ else
+ {
+ $targets{$target} = $makefile;
+ }
+ }
+ }
+ close RESULTS;
+ close CSV;
+}
+
+sub diffcollision($$$)
+{
+ my $target = shift;
+ my $left = shift;
+ my $right = shift;
+
+ $target =~ s/\//\\/g;
+ $left =~ s/\//\\/g;
+ $right =~ s/\//\\/g;
+ my $ret = "unknown";
+ if(!-e $target)
+ {
+ $ret = "missing";
+ }
+ else
+ {
+ if(-e $left && -e $right)
+ {
+ my $leftdiff = 0;
+ my $rightdiff = 0;
+ open(DIFF,"diff $left $target|") or die "couldn't execute diff";
+ print "diff $left $target\n";
+
+ while(my $line = )
+ {
+ if($line =~ m/\S+/)
+ {
+ $leftdiff = 1;
+ print "\t$line";
+ }
+ }
+ close DIFF;
+
+ open(DIFF,"diff $right $target|") or die "couldn't execute diff";
+ print "diff $right $target\n";
+ while( my $line = )
+ {
+ if($line =~ m/\S+/)
+ {
+ $rightdiff = 1;
+ print "\t$line";
+ }
+ }
+ close DIFF;
+
+ if($leftdiff && !$rightdiff )
+ {$ret = "match right";}
+ elsif($rightdiff && !$leftdiff)
+ {$ret = "match left";}
+ elsif($rightdiff && $leftdiff)
+ {$ret = "match neither";}
+ elsif(!$rightdiff && !$leftdiff)
+ {$ret = "match both";}
+ }
+
+
+ }
+ return $ret;
+}
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/merge_csv.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/merge_csv.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,124 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# 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:
+# Symbian Foundation Ltd - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Adds info form a file to a CSV
+
+use strict;
+my $csvfile = shift @ARGV;
+my $filelist = shift @ARGV;
+
+
+if(! -e $csvfile)
+{
+ die "cannot find $csvfile\n";
+}
+
+
+if(!-e $filelist)
+{
+ die "Cannot find $filelist\n";
+}
+ my %files;
+ open(FILES,"<$filelist") or die "Couldn't open $filelist\n";
+ while(my $line = )
+ {
+ $line =~ s/\\/\//g;
+
+ if($line =~ m/^(.+)\s*:\s(.+\S)\s*$/)
+ {
+ my $group = $1;
+ my $file = $2;
+
+ $file = lc($file);
+ if($files{$file})
+ {
+
+ $files{$file} = $files{$file}.",".$group;
+ print "Multi:$file".$files{$file}."\n";
+
+ }
+ else
+ {
+ $files{$file} = ",".$group;
+ }
+ }
+ }
+ close FILE;
+
+ open(CSV,"<$csvfile") or die "Couldn't open $csvfile\n";
+ my $resultsfile = $csvfile."_results.csv";
+ open(RESULTS,">$resultsfile") or die "Couldn't open write to $resultsfile\n";
+ my $header = ;
+ $header =~ s/\n//;
+ print RESULTS $header.",status\n";
+ my @fields = split(',',$header);
+ my $targetindex = 0;
+ my $counter = 0;
+ my $bldinfindex = 0;
+
+ my %failed;
+ my %bldinffiles;
+ foreach my $column (@fields)
+ {
+ if($column =~ m/target/)
+ {
+ $targetindex = $counter;
+ }
+ elsif($column =~ m/bldinf/)
+ {
+ $bldinfindex = $counter;
+ }
+ ++$counter;
+ }
+# print "\ntarget:$targetindex\tbuildinf:$bldinfindex\n";
+ while(my $line = )
+ {
+ $line =~ s/\n//;
+ @fields = split(',',$line);
+ my $target = $fields[$targetindex];
+ $target = lc($target);
+ my $bldinf = $fields[$bldinfindex];
+ if(!defined $bldinffiles{$bldinf})
+ {
+ $bldinffiles{$bldinf} = 1;
+ }
+
+ if(defined $files{$target})
+ {
+ $line = $line.$files{$target};
+ if($files{$target} =~ m/fail/i)
+ {
+ if(!defined $failed{$bldinf})
+ {
+ $failed{$bldinf} = 1;
+ }
+ }
+ }
+ print RESULTS $line."\n";
+
+ }
+ close RESULTS;
+ close CSV;
+ foreach my $bldinf (sort(keys %bldinffiles))
+ {
+ if(!defined $failed{$bldinf})
+ {
+ print "OK:\t$bldinf\n";
+ }
+ }
+ foreach my $bldinf (sort(keys %failed))
+ {
+ print "Failed:\t$bldinf\n";
+ }
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/parselistdirs.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/parselistdirs.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,288 @@
+#!/usr/bin/perl
+use strict;
+
+#listdir_platform_MCL.PDK-3.5_baseline.log
+#listdir_platform_MCL.PDK-3.5_post-clean.log
+#listdir_platform_MCL.PDK-3.5_post-clean_delta.log
+#listdir_platform_MCL.PDK-3.5_post-build-tools2.log
+#listdir_platform_MCL.PDK-3.5_post-build-tools.log
+#listdir_platform_MCL.PDK-3.5_post-build-main.log
+#listdir_platform_MCL.PDK-3.5_s60-baseline.log
+#listdir_platform_MCL.PDK-3.5_post-s60-clean.log
+#listdir_platform_MCL.PDK-3.5_post-s60-clean_delta.log
+#listdir_platform_MCL.PDK-3.5_post-s60-build-tools.log
+#listdir_platform_MCL.PDK-3.5_post-s60-build-main.log
+
+
+
+my $lowercase = 1;
+my $useoutputfiles = 1;
+my $path = shift @ARGV;
+my $outputpath = shift @ARGV;
+
+main();
+
+
+
+sub main()
+{
+ if($lowercase)
+ {
+ print "Running in lower case mode!\n";
+ }
+ my @listfiles = glob($path."listdir*");
+
+ my $gt_base;
+ my $gt_clean;
+ my $gt_main;
+ my $s60_base;
+ my $s60_clean;
+ my $s60_main;
+ foreach my $file (@listfiles)
+ {
+ if($file =~ m/s60/)
+ {
+ if($file =~ m/baseline/)
+ {
+ $s60_base = parsefile($file);
+ }
+ elsif($file =~ m/clean.log/)
+ {
+ $s60_clean = parsefile($file);
+ }
+ elsif($file =~ m/main.log/)
+ {
+ $s60_main = parsefile($file);
+ }
+ }
+ else
+ {
+ if($file =~ m/baseline/)
+ {
+ $gt_base = parsefile($file);
+ }
+ elsif($file =~ m/clean.log/)
+ {
+ $gt_clean = parsefile($file);
+ }
+ elsif($file =~ m/main.log/)
+ {
+ $gt_main = parsefile($file);
+ }
+ }
+ }
+
+
+
+ my $gt_try = diff($gt_base, $gt_clean);
+ my $gt_fail = diff($gt_base, $gt_main);
+ my $gt_built = diff($gt_try, $gt_fail);
+
+# printgroup($gt_fail,'fail');
+# printgroup($gt_built,'built');
+
+
+ my $s60_try = diff($s60_base, $s60_clean);
+ my $s60_fail = diff($s60_base, $s60_main);
+ my $s60_built = diff($s60_try, $s60_fail);
+
+ my $s60_add = diff($s60_main,$s60_base);
+ my $gt_add = diff($gt_main,$gt_base);
+
+
+ my $try = union($gt_try,$s60_try); # All the stuff we try to build
+ my $untouched = diff($gt_base,$try); # all the stuff we didn't try.
+
+ #printgroup($try,"try");
+
+ my $uptodate = finduptodate($path); # this is a bit dicey, 'cos it might get deleted/rebuilt by another part...
+ my $exported = findexported($path);
+
+ printgroup($exported,'exported');
+ $untouched = diff($untouched,union($exported,$uptodate));
+ printgroup($untouched,"untouched"); # 'clean' doesn't remove headers if they are 'uptodate'
+
+ #here's where the fun begins...
+
+ my $rebuildfail = intersect(union($gt_built,$gt_add), $s60_fail); #everything built in GT, minus stuff that failed in S60
+ my $rebuilt = intersect($gt_built, $s60_built); # everything built in both
+ my $built = diff(diff(union($gt_built, $s60_built),$rebuilt),$rebuildfail); # everything built, minus rebuilt, minus rebuildfail
+ my $fail = diff(union($gt_fail,$s60_fail),$rebuildfail); #everyhting that failed, minus the rebuild failures
+
+ my $added = diff(diff(union($gt_add,$s60_add),$exported),$rebuildfail); #all the stuff that got added, minus the stuff that filaed to rebuild
+
+ printgroup($built,"built");
+ printgroup($rebuilt,'rebuilt');
+ printgroup($rebuildfail,'rebuildfail');
+ printgroup($added,"added");
+
+
+ printgroup($fail,"failed");
+
+ $uptodate = diff($uptodate,union(union($added,$built),$exported)); #remove all stuff in other categories...'uptodate' was added late in the program
+ printgroup($uptodate,"uptodate"); # uptodate list isn't that good at the moment...put it last.
+}
+
+sub printgroup($$)
+{
+ my $group = shift;
+ my $label = shift;
+ foreach my $key (sort keys %$group)
+ {
+ print $label." : ".$key."\t".$group->{$key}."\n";
+ }
+ if($useoutputfiles)
+ {
+ my $filename = $outputpath."results_$label.log";
+ open(FILE,">$filename") or die "Couldn't open $filename\n";
+ foreach my $key (sort keys %$group)
+ {
+ print FILE $key."\n";
+ }
+ close FILE;
+ }
+}
+
+sub diff($s1,$s2)
+{
+ my $s1 = shift;
+ my $s2 = shift;
+ my %r;
+ foreach my $key (keys %$s1)
+ {
+ if(!defined $s2->{$key})
+ {
+ $r{$key} = $s1->{$key};
+ }
+ }
+ return \%r;
+}
+
+
+
+sub intersect($s1,$s2)
+{
+ my $s1 = shift;
+ my $s2 = shift;
+ my %r;
+ foreach my $key (keys %$s1)
+ {
+ if(defined $s2->{$key})
+ {
+ $r{$key} = $s2->{$key};
+ }
+ }
+ return \%r;
+}
+
+sub union($s1,$s2)
+{
+ my $s1 = shift;
+ my $s2 = shift;
+ my %r;
+ foreach my $key (keys %$s1)
+ {
+ $r{$key} = $s1->{$key};
+ }
+ foreach my $key (keys %$s2) #lazy
+ {
+ $r{$key} = $s2->{$key};
+ }
+ return \%r;
+}
+
+
+sub finduptodate($path)
+{
+ my $path = shift;
+ my @files = glob($path."*compile.log");
+ my %results;
+ foreach my $file (@files)
+ {
+ print "Reading $file\n";
+ open(FILE,"<$file") or die "Cannot open $file\n";
+ while( my $line = )
+ {
+ if($line =~ m/Up-to-date:\s+(.+)<\/info>/)
+ {
+ my $str = $1;
+ $str =~ s/^\S:\///;
+ if($lowercase)
+ {
+ $str = lc($str);
+ }
+
+ $results{$str} = "";
+# print $str;
+ }
+ }
+ close FILE;
+ }
+
+ return \%results;
+}
+
+sub findexported($)
+{
+ my $path = shift;
+ my @files = glob($path."*compile.log");
+ my %results;
+ foreach my $file (@files)
+ {
+ print "Reading $file\n";
+ open(FILE,"<$file") or die "Cannot open $file\n";
+ while( my $line = )
+ {
+#Copied u:/sf/app/conntools/emulatorlan/data/s60_32_default_snaps.xml to u:/epoc32/winscw/c/s60_32_default_snaps.xml
+ if($line =~ m/Copied\s+(\S+)\s+to\s+(\S+)<\/info>/)
+ {
+
+ my $str = $2; #we want the destination, not the source...
+ $str =~ s/^\S:\///;
+ if($lowercase)
+ {
+ $str = lc($str);
+ }
+ $results{$str} = "";
+ }
+ }
+ close FILE;
+ }
+ return \%results;
+}
+
+
+
+sub parsefile($file)
+{
+ my $file = shift;
+# my @results;
+ my %results;
+ print "Reading $file\n";
+ open(FILE,"<$file") or die "Couldn't open $file\n";
+ while(my $line = )
+ {
+ $line =~ s/\n//;
+ if($line =~ m/\S+/)
+ {
+ if( $line !~/^epoc32/ ) #latest lists sometimes don't have this...
+ {
+ $line = "epoc32/".$line;
+ }
+ if( $line !~/epoc32\/build\// ) #ignore epoc32/build
+ {
+ if($lowercase)
+ {
+ $line = lc($line);
+ }
+ $results{$line} = "";
+# $results{$line} = $file; #debugging
+ }
+
+# push(@results,$line)
+ }
+ }
+ close FILE;
+# return \@results;
+ return \%results;
+}
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/parsewhatlog.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/parsewhatlog.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+#parsewhatlog - parses a whatlog, gives csv output.
+use strict;
+
+#
+#
+#
+#
+#t:/epoc32/release/winscw/udeb/3gpmp4lib.lib
+#t:/epoc32/release/winscw/udeb/3gpmp4lib.lib
+#t:/epoc32/release/winscw/udeb/3gpmp4lib.dll
+#
+#
+#t:/epoc32/data/z/resource/messaging/bif/vclp.mbm
+#t:/epoc32/release/winscw/udeb/z/resource/messaging/bif/vclp.mbm
+#t:/epoc32/release/winscw/urel/z/resource/messaging/bif/vclp.mbm
+#t:/epoc32/localisation/vclp/mbm/vclp0.bmp
+#t:/epoc32/localisation/group/vclp.info
+#
+#
+#t:/epoc32/data/z/resource/plugins/aacdecoderconfigci.rsc
+#t:/epoc32/release/winscw/udeb/z/resource/plugins/aacdecoderconfigci.rsc
+#t:/epoc32/release/winscw/urel/z/resource/plugins/aacdecoderconfigci.rsc
+#t:/epoc32/localisation/aacdecoderconfigci/rsc/aacdecoderconfigci.rpp
+#t:/epoc32/localisation/group/aacdecoderconfigci.info
+#
+
+
+my $keepgoing = 1;
+main();
+
+sub cleanpath($)
+{
+ my $str = lc(shift); #drop the case.
+ $str =~ s/^\S://; #remove drive letter
+ $str =~ s/^\///; # some custom makefiles report aboslute path
+ $str =~ s/\\/\//g; #switch the path
+ $str =~ s/\/\//\//g;#we have some double slashes in some resources...
+ return $str;
+}
+sub ext($)
+{
+ my $str = shift;
+ $str =~ s/\S+\.//; #may fail...
+ return $str;
+}
+
+sub main()
+{
+ my $path = shift @ARGV;
+ my @files = glob($path."/*whatlog*WHAT_*compile.log");
+ foreach my $filename (@files)
+ {
+# print $filename."\n";
+ parsefile($filename);
+ }
+}
+sub parsefile($filename)
+{
+ my $filename = shift;
+ open(FILE,"<$filename") or die "Couldn't open filename\n";
+
+ #I'm using previous formatting stypes from the flm parsing...ie location, bld.inf, makefile, type, target,extension
+ print "location,bldinf,makefile,type,target,extension\n";
+ my $bldinf = "";
+ my $makefile = "";
+ my $inrecipe = 0;
+
+ my $linecount = 0;
+ while(my $line = )
+ {
+ ++$linecount;
+ if($line =~ m/^/) #brittle
+ {
+ $bldinf = $1;
+ $makefile = $2;
+ }
+ elsif($line =~ m/^<\/whatlog>/)
+ {
+ $bldinf = "";
+ $makefile = "";
+ }
+ elsif($line =~ m/^(\S+)<\/bitmap>/)
+ {
+ if($bldinf eq "" || $makefile eq "" && !$keepgoing)
+ {
+ die "$filename($linecount) bldinf=$bldinf makefile=$makefile: $line\n";
+ }
+ print "$filename($linecount),".cleanpath($bldinf).",".cleanpath($makefile).",bitmap,".cleanpath($1).",".ext($1)."\n";
+ }
+ elsif($line =~ m/^(\S+)<\/build>/)
+ {
+ if($bldinf eq "" || $makefile eq "" && !$keepgoing)
+ {
+ die "$filename($linecount) bldinf=$bldinf makefile=$makefile : $line\n";
+ }
+ print "$filename($linecount),".cleanpath($bldinf).",".cleanpath($makefile).",binary,".cleanpath($1).",".ext($1)."\n";
+ }
+ elsif($line =~ m/^(\S+)<\/resource>/)
+ {
+ if($bldinf eq "" || $makefile eq "" && !$keepgoing)
+ {
+ die "$filename($linecount) bldinf=$bldinf makefile=$makefile : $line\n";
+ }
+ print "$filename($linecount),".cleanpath($bldinf).",".cleanpath($makefile).",resource,".cleanpath($1).",".ext($1)."\n";
+ }
+
+ #
+ elsif($line =~ m/^/)
+ {
+ if($bldinf eq "" )
+ {
+ die "$filename($linecount) bldinf=$bldinf: $line\n";
+ }
+ print "$filename($linecount),".cleanpath($bldinf).",".cleanpath($2).",export,".cleanpath($1).",".ext($1)."\n";
+ }
+ #
+
+ elsif($line =~ m//)
+ {
+ $bldinf = $1;
+ $makefile = $2;
+ $inrecipe = 1;
+ }
+ elsif($inrecipe && $line =~ m/^(\S:\S+)/)
+ {
+ if($bldinf eq "" || $makefile eq "" && !$keepgoing)
+ {
+ die "$filename($linecount) bldinf=$bldinf makefile=$makefile : $line\n";
+ }
+ my $str = cleanpath($1);
+
+ print "$filename($linecount),".cleanpath($bldinf).",".cleanpath($makefile).",custom,".cleanpath($str).",".ext($str)."\n";
+ }
+
+ elsif($line =~ m/<\/recipe>/)
+ {
+ $bldinf = "";
+ $makefile = "";
+ $inrecipe = 0;
+ }
+
+
+ }
+ close FILE;
+}
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/readme.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/readme.txt Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,29 @@
+Update 20090519 by MattD
+
+Can now run parselistdirs.pl from anywhere witout lots of intermediate output files:
+perl parselistdirs.pl ()
+Note that it will still put most of it's output to the console as before. The second dir is optional.
+
+Added find_collisions.pl
+Prefers to be run from the root on the build machine (as it's looking for files to compare)
+It's a hacked up version of merge_csv.pl
+Usage:
+perl find_collisions.pl what_results.log >collision_result.txt
+It creates a CSV based on the name of the file passed to it (ie what_results.log_collisions.csv)
+
+Yes, They are all quick and dirty.
+
+Older stuff:
+
+F:\6.2\generated\parselistdirs.pl - creates sets from the listdirs outputs...
+F:\6.2\generated\parsewhatlog.pl - creates a CSV-style log from the whatlogs.
+F:\6.2\generated\merge_csv.pl - takes the output CSV from parsewhatlog.pl and merges in the output of parselistdirs.pl
+in generated>
+perl parselistdirs.pl ..\ >list_results.log
+perl parsewhatlog.pl ..\ >what_results.log
+perl merge_csv.pl what_results.log list_results.log >summary.txt
+
+The Test dir is a directory filled with test text files...
+
+
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/scan_antlogs.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/scan_antlogs.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,216 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# 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:
+# Symbian Foundation Ltd - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# Parse "ant" logs from SBS build to determine missing source files
+
+my $pdk_src = "../.."; # path to sf tree - correct from "build/output"
+
+my %missing_files;
+my %damaged_components;
+my %excluded_things;
+my %abld_import;
+my %damaged_bldinfs;
+
+sub canonical_path($)
+ {
+ my ($path) = @_;
+ my @bits = split /\//, $path;
+ my @newbits = ();
+
+ foreach my $bit (@bits)
+ {
+ next if ($bit eq ".");
+ if ($bit eq "..")
+ {
+ pop @newbits;
+ next;
+ }
+ push @newbits, $bit;
+ }
+ return join("/", @newbits);
+ }
+
+sub excluded_thing($$$)
+ {
+ my ($path, $missing, $reason) = @_;
+ if (!defined $excluded_things{$path})
+ {
+ @{$excluded_things{$path}} = ();
+ }
+ push @{$excluded_things{$path}}, $missing;
+ # print "Missing $missing from excluded $path ($reason)\n";
+ }
+
+sub do_missing_file($$$)
+ {
+ my ($missing, $missing_from, $reason) = @_;
+
+ $missing = canonical_path($missing);
+ $missing_from = canonical_path($missing_from);
+
+ my $component = "??";
+ if ($missing_from ne "??")
+ {
+ my @dirs = split /\//, $missing_from;
+ shift @dirs if ($dirs[0] eq "sf");
+
+ $path = $pdk_src . "/sf/$dirs[0]/$dirs[1]";
+ if (!-e $path)
+ {
+ # no sign of the package
+ excluded_thing($path, $missing, $reason);
+ return;
+ }
+ $path .= "/$dirs[2]";
+ if (!-e $path)
+ {
+ # no sign of the collection
+ excluded_thing($path, $missing, $reason);
+ return;
+ }
+ $path .= "/$dirs[3]";
+ if (!-e $path)
+ {
+ # no sign of the component
+ excluded_thing($path, $missing, $reason);
+ return;
+ }
+ $component = join("/", $dirs[0], $dirs[1], $dirs[2], $dirs[3]);
+ }
+
+ $missing_files{$missing} = $reason if ($missing ne "??");
+
+ if (!defined $damaged_components{$component})
+ {
+ @{$damaged_components{$component}} = ();
+ }
+ push @{$damaged_components{$component}}, $missing;
+ }
+
+sub scan_logfile($)
+{
+ my ($logfile) = @_;
+
+ open FILE, "<$logfile" or print "Error: cannot open $logfile: $!\n" and return;
+
+ my $line;
+ while ($line = )
+ {
+ # Could not export s:/sf/mw/classicui/commonuisupport/uikon/docs/Uikon_1.2_Caps_Lock_Extension.doc to s:/epoc32/engdoc/application_framework/uikon/uikon_1.2_caps_lock_extension.doc
+ if ($line =~ /^Could not export .*\/(sf\/.*) to .:\/(epoc32\/.*)$/)
+ {
+ my $source = $1;
+ my $exported = $2;
+ if (-e "m:/$exported")
+ {
+ $abld_import{$source} = $exported;
+ }
+ next;
+ }
+ # Source of export does not exist: s:/sf/mw/messagingmw/messagingfw/msgtests/group/msgerr.ra
+ # Source zip for export does not exist: s:/sf/os/deviceplatformrelease/S60LocFiles/data/96.zip
+ if ($line =~ /^Source (of|zip for) export does not exist.\s+.*\/(sf\/.*)$/)
+ {
+ do_missing_file($2, "??", "source of export");
+ next;
+ }
+ # No bld.inf found at sf/os/buildtools/toolsandutils/burtestserver/Group in s:/output/build/canonical_system_definition_GT_tb91sf.xml
+ # No bld.inf found at s:/sf/adaptation/stubs/licensee_tsy_stub/group in s:/output/build/canonical_system_definition_S60_5_1_clean.xml
+ if ($line =~ /No bld.inf found at (.*\/)?(sf\/.*) in /i)
+ {
+ my $bldinf = "$2/bld.inf";
+
+ do_missing_file($bldinf, $bldinf, "no bld.inf");
+ $damaged_bldinfs{"$bldinf\t(missing)"} = 1;
+ next;
+ }
+ # D:/Symbian/Tools/PDT_1.0/raptor/win32/mingw/bin/cpp.exe: s:/sf/os/networkingsrv/networksecurity/ipsec/group/bld.inf:19:42: ../eventmediator/group/bld.inf: No such file or directory
+ if ($line =~ /cpp.exe: .*\/(sf\/[^:]*):.*\s+([^:]+): No such file/)
+ {
+ my $parent = $1;
+ my $relative = $2;
+
+ if ($parent =~ /\.inf$/i)
+ {
+ my $parent = canonical_path($parent);
+ $damaged_bldinfs{"$parent\t$relative"} = 1;
+ }
+ do_missing_file("$parent/../$relative", $parent, "#include");
+ next;
+ }
+ }
+ close FILE;
+ }
+
+ my @logfiles = map(glob,@ARGV);
+ foreach my $logfile (@logfiles)
+ {
+ print "Scanning $logfile...\n";
+ scan_logfile($logfile);
+ }
+
+ printf "%d Excluded things\n", scalar keys %excluded_things;
+ foreach my $component (sort keys %excluded_things)
+ {
+ my @list = @{$excluded_things{$component}};
+ my %hash;
+ foreach my $missing (@list)
+ {
+ $hash{$missing} = 1;
+ }
+ printf "%s\t%d\n", $component, scalar keys %hash;
+ print "\t", join("\n\t", sort keys %hash), "\n";
+ }
+ print "\nDamaged components\n";
+ foreach my $component (sort keys %damaged_components)
+ {
+ my @list = @{$damaged_components{$component}};
+ my %hash;
+ foreach my $missing (@list)
+ {
+ $hash{$missing} = 1;
+ }
+ printf "%s\t%d\n", $component, scalar keys %hash;
+ print "\t", join("\n\t", sort keys %hash), "\n";
+ }
+ print "\nMissing files\n";
+ foreach my $missing (sort keys %missing_files)
+ {
+ my $exported = $abld_import{$missing};
+ $exported = "(not in PDK)" if (!defined $exported);
+ my $reason = $missing_files{$missing};
+ my @dirs = split /\//, $missing;
+ my $path = shift @dirs;
+ my $dir;
+
+ while ($dir = shift @dirs)
+ {
+ if (-e "$pdk_src/$path/$dir")
+ {
+ # still exists at this point
+ $path .= "/$dir";
+ next;
+ }
+ print "\t$reason\t$path\t\t", join("/", $dir,@dirs), "\t$exported\n";
+ last;
+ }
+ }
+
+ print "\nDamaged bld.infs\n";
+ print join("\n", sort keys %damaged_bldinfs, "");
+
+ print "\n\n";
+ printf "%d files missing from ", scalar keys %missing_files;
+ printf "%d damaged components\n", scalar keys %damaged_components;
+
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/clean_compile.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/clean_compile.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,10 @@
+
+dddaaaa
+Up-to-date: o:/epoc32/uptodate.txt
+sdfla
+
+dgr
+g
+
+h
+gf
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_baseline.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_baseline.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,8 @@
+epoc32/untouched.txt
+epoc32/uptodate.txt
+epoc32/gt_fail.txt
+epoc32/gt_built.txt
+epoc32/s60_fail.txt
+epoc32/s60_built.txt
+epoc32/rebuilt.txt
+epoc32/rebuildfail.txt
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_clean.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_clean.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,4 @@
+epoc32/untouched.txt
+epoc32/s60_fail.txt
+epoc32/s60_built.txt
+epoc32/uptodate.txt
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_main.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_main.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,8 @@
+epoc32/untouched.txt
+epoc32/gt_built.txt
+epoc32/gt_extra.txt
+epoc32/s60_fail.txt
+epoc32/s60_built.txt
+epoc32/rebuilt.txt
+epoc32/rebuildfail.txt
+epoc32/extra_rebuildfail.txt
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_s60_baseline.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_s60_baseline.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,9 @@
+epoc32/untouched.txt
+epoc32/gt_built.txt
+epoc32/gt_extra.txt
+epoc32/s60_fail.txt
+epoc32/s60_built.txt
+epoc32/rebuilt.txt
+epoc32/rebuildfail.txt
+epoc32/extra_rebuildfail.txt
+epoc32/uptodate.txt
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_s60_clean.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_s60_clean.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,4 @@
+epoc32/untouched.txt
+epoc32/gt_built.txt
+epoc32/gt_extra.txt
+epoc32/uptodate.txt
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/analysis/test/listdirs_s60_main.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/analysis/test/listdirs_s60_main.log Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,8 @@
+epoc32/untouched.txt
+epoc32/uptodate.txt
+
+epoc32/gt_built.txt
+epoc32/gt_extra.txt
+epoc32/s60_built.txt
+epoc32/s60_extra.txt
+epoc32/rebuilt.txt
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/ats3_testdrop.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/ats3_testdrop.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# 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:
+# Symbian Foundation Ltd - initial contribution.
+# Mike Kinghan, mikek@symbian.org
+#
+# Contributors:
+#
+# Description:
+# This is a tool for sending an ATS3 testdrop to an ATS3 server.
+
+use strict;
+use Getopt::Long;
+use File::Copy;
+use File::Spec;
+
+my $username = "admin";
+my $password = "admin";
+my $host;
+my $schedule;
+my $host_drop_path;
+my $local_drop_path;
+my $local_test_pkg;
+my $help;
+my $dev_null = $^O =~ /^MSWin/ ? "nul" : "/dev/null";
+
+sub usage($);
+sub help();
+sub usage_error();
+
+my %optmap = ( 'host' => \$host,
+ 'local-test-pkg' => \$local_test_pkg,
+ 'host-drop-path' => \$host_drop_path,
+ 'local-drop-path' =>\$local_drop_path,
+ 'username' => \$username,
+ 'password' => \$password,
+ 'schedule' => \$schedule,
+ 'help' => \$help);
+
+GetOptions(\%optmap,
+ 'host=s',
+ 'local-test-pkg=s',
+ 'host-drop-path=s',
+ 'local-drop-path=s',
+ 'username=s',
+ 'password=s',
+ 'schedule=s',
+ 'help!')
+ or usage_error();
+
+if ($help) {
+ help();
+}
+
+usage_error(), unless (defined($host) && defined($local_test_pkg) && defined($local_drop_path) && defined($host_drop_path));
+
+my $curl_version = $^O =~ /^MSWin/ ? `curl --version 1> $dev_null 2>&1` : `curl --version 1> $dev_null 2>&1`;
+die("Need program \"curl\". Not found"), if ($?);
+die("Test drop path \"$local_drop_path\" not found"), unless ( -d "$local_drop_path");
+
+$host .= ":8080", unless ($host =~ /:\d+$/);
+
+my ($vol,$dir,$pkg);
+my $local_test_drop;
+my $host_test_drop;
+
+if ($local_test_pkg =~ /^\.\.\.(.+)/ ) {
+ $pkg = $1;
+ $local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
+ die("Test package file \"$local_test_drop\" not found"), unless ( -f "$local_test_drop");
+}
+else {
+ die("Test package file \"$local_test_pkg\" not found"), unless ( -f "$local_test_pkg");
+ ($vol,$dir,$pkg) = File::Spec->splitpath($local_test_pkg);
+ $local_test_drop = File::Spec->catfile($local_drop_path,$pkg);
+ if ( -f "$local_test_drop") {
+ my $cmp_local_test_drop = $local_test_drop;
+ my $cmp_local_test_pkg = $local_test_pkg;
+ if ($^O =~ /^MSWin/) {
+ $cmp_local_test_drop = lc($local_test_drop);
+ $cmp_local_test_pkg = lc($local_test_pkg);
+ }
+ if ("$cmp_local_test_drop" eq "$cmp_local_test_pkg") {
+ if (unlink($local_test_drop) == 0) {
+ die("Can't delete stale test drop \"$local_test_drop\". $!");
+ }
+ else {
+ print("A stale test drop \"$local_test_drop\" existed. Deleted\n");
+ }
+ }
+ }
+ copy("$local_test_pkg","$local_test_drop")
+ or die("Cannot copy \"$local_test_pkg\" -> \"$local_test_drop\". $!");
+}
+$host_test_drop = File::Spec->catfile($host_drop_path,$pkg);
+my $url ="http://$host/ats3/XTestRunExecute.do?username=$username&password=$password&testrunpath=$host_test_drop";
+$url .= "&schedule=$schedule", if (defined($schedule));
+my $curl_cmd = "curl \"$url\"";
+system("$curl_cmd");
+die("\nTest drop failed: $!"), if ($?);
+print("\nTest drop done");
+
+exit 0;
+
+sub usage($)
+{
+ my $error = shift;
+ my $fh = $error == 0 ? *STDOUT : *STDERR;
+ print $fh "ats3_testdrop.pl\n" .
+ "Send a test drop to an ATS3 server for execution\n" .
+ "usage:\n" .
+ " ats3_testdrop.pl --help\n" .
+ " ats3_testdrop.pl --host=HOSTNAME --local-test-pkg=PKGFILE --local-drop-path=LOCALPATH " .
+ " --host-drop-path=HOSTPATH " .
+ "[--username=ATS3USERNAME] [--password=ATS3PASSWORD] [--schedule=DD.MM.YYYY-HH:MM]\n" .
+ "options:\n" .
+ " --help Display this help and exit\n" .
+ " --host=HOSTAME HOSTNAME is ATS3 server\n" .
+ " --local-test-pkg=PKGFILE PKGFILE is the test package.\n" .
+ " If PKGFILE begins \"...\" a filename in LOCALPATH is assumed\n" .
+ " --local-drop-path=LOCALPATH Path to local directory where PKGFILE will be dropped\n" .
+ " --host-drop-path=HOSTPATH Host directory that is mapped to LOCALPATH.\n" .
+ " Must agree with the properties of the registered device that the test package nominates\n" .
+ " --username=ATS3USERNAME ATS3 user to whome the test will belong. Default=admin\n" .
+ " --password=ATS3PASSWORD Password of ATS3 user. Default=admin\n" .
+ " --schedule=DD.MM.YYYY-HH:MM Date-time at which test is to run. Default=as soon as possible\n";
+ exit $error;
+}
+
+sub help()
+{
+ usage(0);
+}
+
+sub usage_error()
+{
+ usage(1);
+}
+
+# EOF
+
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/make_junction.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/make_junction.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,133 @@
+#!/usr/bin/perl
+
+# Copyright (c) 2009 Symbian Foundation Ltd
+# 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:
+# Symbian Foundation Ltd - initial contribution.
+# Mike Kinghan, mikek@symbian.org
+#
+# Contributors:
+#
+# Description:
+# This is a tool for sending an ATS3 testdrop to an ATS3 server.
+
+use strict;
+use Getopt::Long;
+use File::Spec;
+
+my $link;
+my $target;
+my $help;
+my $force = 0;
+
+sub usage($);
+sub help();
+sub usage_error();
+
+my %optmap = ( 'link' => \$link,
+ 'target' => \$target,
+ 'force' => \$force,
+ 'help' => \$help);
+
+GetOptions(\%optmap,
+ 'link=s',
+ 'target=s',
+ 'force!',
+ 'help!')
+ or usage_error();
+
+if ($help) {
+ help();
+}
+
+usage_error(), unless (defined($link) && defined($target));
+
+my $junction_help = `junction /?`;
+die("Need command \"junction\". Not found\n"), if ($junction_help =~ /is not recognised/);
+die("Directory \"$target\" not found\n"), unless -d "$target";
+
+my ($vol,$dir,$file) = File::Spec->splitpath($target);
+my @subst_lines = `subst`;
+
+foreach (@subst_lines) {
+ my $line = $_;
+ chomp($line);
+ $line =~ /^(.:)\\: => (.*)$/;
+ die("Cannot parse output of 'subst'. Bailing out confused."), unless (defined($1) and defined($2));
+ my $subst_drive = $1;
+ my $subst_targ = $2;
+ if (lc($subst_drive) eq lc($vol)) {
+ print("Target $target is in a substituted drive: $line\n");
+ $target = File::Spec->catfile(($subst_targ,$dir),$file);
+ print("Target $target will be used\n");
+ last;
+ }
+}
+
+
+if ( -e "$link") {
+ print("\"$link\" already exists. ");
+ if (!$force) {
+ my $choice;
+ while($choice ne 'y' and $choice ne 'n') {
+ print "Delete? (y/n)? ";
+ $choice = ;
+ chomp($choice);
+ $choice = lc($choice);
+ }
+ $force = $choice eq 'y';
+ }
+ if ($force) {
+ system("junction -d \"$link\" > nul");
+ if ($?) {
+ die("Cannot delete \"$link\": $!\n");
+ }
+ else {
+ print "Deleted \"$link\"\n";
+ }
+ }
+}
+
+system("junction \"$link\" \"$target\" > nul");
+if ($?) {
+ die("Cannot cteate junction \"$link\" -> \"$target\": $!\n");
+}
+else {
+ print("Created junction \"$link\" -> \"$target\"\n");
+}
+exit 0;
+
+sub usage($)
+{
+ my $error = shift;
+ my $fh = $error == 0 ? *STDOUT : *STDERR;
+ print $fh "make_junction.pl\n" .
+ "Create a Windows junction (a.k.a symbolic link)\n" .
+ "usage:\n" .
+ " make_junction.pl --help\n" .
+ " make_junction.pl --link=LINKDIR --target=TARGDIR\n " .
+ "options:\n" .
+ " --help Display this help and exit\n" .
+ " --link=LINKDIR LINKDIR specifies the junction to be created. Last component is the junction. The rest must exist\n" .
+ " If LINKDIR is an existing junction it is pre-emptively deleted\n" .
+ " --target=TARGDIR TARGDIR is directory to which the junction will point.\n" .
+ " If TARGDIR is in a substed drive, the real path will be used.\n";
+ exit $error;
+}
+
+sub help()
+{
+ usage(0);
+}
+
+sub usage_error()
+{
+ usage(1);
+}
+
+# EOF
+
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/8.0a/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/8.0a/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 8.0a
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/8.0b/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/8.0b/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 8.0b
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/8.1a/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/8.1a/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 8.1a
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/8.1b/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/8.1b/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 8.1b
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/9.0/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/9.0/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 9.0
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/9.1/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/9.1/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 9.1
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/ReadMe.doc
Binary file common/tools/ats/smoketest/Group/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,24 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For automated smoketest
+//
+//
+
+#include "../Utils/group/bld.inf"
+#include "../agenda/Group/bld.inf"
+#include "../apploader/Group/bld.inf"
+#include "../contacts/group/bld.inf"
+#include "../messaging/Group/bld.inf"
+#include "../System/Group/bld.inf"
+#include "../Timew/Group/bld.inf"
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/configuration.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/configuration.cfg Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,21 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Version 8.1b
+//
+//
+
+#if !defined (CONFIGURATION_CFG)
+#define CONFIGURATION_CFG
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/testtools_smoketest.history.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/testtools_smoketest.history.xml Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,5 @@
+
+
+
+
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Group/testtools_smoketest.mrp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Group/testtools_smoketest.mrp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,11 @@
+component testtools_smoketest
+source \sf\app\techview\buildverification\smoketest
+exports \sf\app\techview\buildverification\smoketest\Group
+# binary \sf\app\techview\buildverification\smoketest\group all
+
+notes_source \component_defs\release.src
+
+# == IPR section auto-inserted from distribution.policy files ==
+ipr T
+
+# == end auto-inserted section ==
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/ReadMe.doc
Binary file common/tools/ats/smoketest/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/SmokeTest.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/SmokeTest.pm Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,433 @@
+# Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# SmokeTestSuite.pm
+# The SmokeTestSuite package contains subroutines that are needed to build a
+# testdriver test suite.
+# This script was born on 18/04/2005
+#
+#
+
+#!/usr/bin/perl -w
+package SmokeTest;
+use SmokeTestROM;
+use SmokeTestSuite;
+use FindBin;
+use lib "$FindBin::Bin\\..\\..\\..\\..\\os\\buildtools\\bldsystemtools\\commonbldutils\\GenResult\\";
+use FileRead; #Need to include a Findbin::path
+use strict;
+
+#
+# Global Variables
+#
+our $BuildDir = $ENV{'BuildDir'}; # usually M:
+our $serverpool = $ENV{'SmokeTestServerPool'};
+our $buildNo = $ENV{'BuildShortName'}; # Eg. 9.1
+# The Client is run from the dir where SmokeTestClient.pl is located
+# This is to ensure that any ROMs and test packages created are stored there.
+our $sourceDir = "$BuildDir\\src\\common\\testtools";
+our $TestSuite = "SmokeTest";
+our $SmokeTestDir;
+our $NandDir;
+our $TestDriverLocation = "\\epoc32\\tools\\TDEP"; # location for TD zips
+our $TestDriverDrive = "M:";
+our $TestDriverCmd = "$TestDriverDrive\\testdriver\\testdriver.cmd";
+our $TestDriverXML;
+
+# Publish details
+our $PublishServer = $ENV{'PublishLocation'};
+our $ProductType = $ENV{'Type'};
+our $BuildNum = $ENV{'BuildNumber'};
+our $LogsDir = $ENV{'LogsDir'};
+
+# Epocwind.out
+my $tempDirLocation = $ENV{'TEMP'};
+
+#
+# CheckVars: ensures that the essential environment vars and directories exist
+#
+sub CheckVars
+{
+ print "\n** Settings **\n";
+ print "Build Drive = $BuildDir\n";
+ print "Smoke Test Server Pool = $serverpool\n";
+ print "Build Product = $buildNo\n";
+ print "TestDriver Zip Location = $TestDriverLocation\n";
+ print "TestDriver XML Location = $TestDriverXML\n";
+ print "TestDriver Source Location = $sourceDir\n";
+ print "TestDriver Drive = $TestDriverDrive\n";
+ print "SmokeTest working directory= $SmokeTestDir\n";
+ print "NAND build directory = $NandDir\n";
+
+ print "\n** Publishing Information **\n";
+
+ print "Publish server = $PublishServer\n";
+ print "Product Type = $ProductType\n";
+ print "Build Number = $BuildNum\n";
+
+ DieLog("CheckVars: \"Build Directory\" not defined") if !defined $BuildDir;
+ DieLog("CheckVars: \"Smoke Test Server Pool\" not defined") if !defined $serverpool;
+ DieLog("CheckVars: \"Build Product\" not defined") if !defined $buildNo;
+ DieLog("CheckVars: \"Publish server\" not defined") if !defined $PublishServer;
+ DieLog("CheckVars: \"Product Type\" not defined") if !defined $ProductType;
+ DieLog("CheckVars: \"Build Number\" not defined") if !defined $BuildNum;
+ DieLog("CheckVars: Directory \"SmokeTest working directory\" does not exist") if ! -e $SmokeTestDir;
+ DieLog("CheckVars: Directory \"TestDriver Zip Location\" does not exist") if ! -e $TestDriverLocation;
+}
+
+sub main
+{
+ print "\n\n*** START OF SMOKE TEST ***\n\n";
+
+ PrintDateTime();
+
+ my ($iSourceDir, $iTestSuite, $iProduct, $iServerPool, $iProductType,
+ $iPublishLocation, $iBuildNumber, $iXML, $iUnzip, $iBuildDrive, $iTDDrive) = @_;
+
+ $TestSuite = $iTestSuite if defined $iTestSuite;
+ $BuildDir = $iBuildDrive if defined $iBuildDrive;
+ $sourceDir = $BuildDir.$iSourceDir if defined $iSourceDir;
+ $buildNo = $iProduct if defined $iProduct;
+ $serverpool = $iServerPool if defined $iServerPool;
+ $ProductType = $iProductType if defined $iProductType;
+ $PublishServer = $iPublishLocation if defined $iPublishLocation;
+ $BuildNum = $iBuildNumber if defined $iBuildNumber;
+ $TestDriverDrive = $iTDDrive if defined $iTDDrive;
+
+ $SmokeTestDir = "$sourceDir\\$TestSuite";
+ if (defined $iXML)
+ {
+ $TestDriverXML = $iXML;
+ }
+ else
+ {
+ $TestDriverXML = $SmokeTestDir."\\xml";
+ }
+ $NandDir = "$BuildDir\\src\\cedar\\generic\\base\\e32\\rombuild";
+
+ CheckVars();
+
+ # change dir to Smoketest dir
+ chdir "$SmokeTestDir" or DieLog("Can't cd to $SmokeTestDir");
+
+ # unzip latest version of TD
+ if (defined $iUnzip)
+ {
+ unpackTestDriver2();
+ }
+
+ # configure TD
+ configureTestDriver2();
+
+ #
+ # Copy the correct configuration.cfg file
+ # But such source only exists for these products: 8.0a, 8.0b, 8.1a, 8.1b, 9.0, 9.1
+ #
+ print "\n#\n# Copy the correct configuration.cfg file\n#\n";
+ ExecCommand("COPY /Y $SmokeTestDir\\Group\\$buildNo\\configuration.cfg $SmokeTestDir\\Group\\configuration.cfg");
+
+ #Read in hash of smoketests to be run for each product.
+ my ($iCfgFileLocation) = "$FindBin::Bin\\..\\..\\..\\..\\os\\buildtools\\bldsystemtools\\commonbldutils\\GenResult";
+
+ #Read in the smoketest list from a cfg file
+ my $text = &FileRead::file_read ("$iCfgFileLocation\\Product.cfg");
+ #Search for an entry matching (At the beginning of line there should be 1 or more alphanumberic chars
+ #Followed by a "."(optional to allow codenames) followed by more alphanumberic chars followed by 0 or more spaces then an = then 0
+ #or more spaces then any amount of chars till the end of the line.
+ #8.1b = EMULATOR_WINSCW ARM4_LUBBOCK ARMV5_LUBBOCK
+ my %iProducts = $text =~ /^\s*(\w+\.?\w+)\s*=\s*(.+)$/mg ;
+
+ #Get the list of platforms to be smoketested for the product.
+ #Need to turn the hash value into an array using split
+ my @iPlatforms = split (/ /,$iProducts{$buildNo});
+ #Build and Execute Test package for each platform as read from configuration file and create and zip rom.
+ ProcessPlatforms (@iPlatforms);
+
+ #
+ # Build Test Package for ROMs
+ #
+ if ($buildNo eq '8.1a' || $buildNo eq '8.1b')
+ {
+ &SmokeTestSuite::BuildAndPackage("ARM4");
+ }
+
+ if ($buildNo ne '8.1a')
+ {
+ &SmokeTestSuite::BuildAndPackage("ARMv5");
+ }
+
+ #
+ # Find out which server to use
+ #
+ print "\n#\n# Find out which server to use\n#\n";
+ ProcessPlatformsforSmoketest(@iPlatforms);
+
+ #
+ # End of Smoke Test
+ #
+ print "\n\n*** END OF SMOKE TEST ***\n\n";
+}
+
+#
+# DieLog: Exits script and inserts a Remark in the build log, which will be picked up by htmlscanlog
+#
+sub DieLog
+{
+ die "\nREMARK: $_[0]\n $!\n\n\n";
+}
+
+
+#
+# Build and publish based on entries in the Product.cfg file
+#
+sub ProcessPlatforms
+{
+
+my $i = 0;
+my @temp;
+my @iPlatforms = @_;
+
+foreach my $platform (@iPlatforms)
+ {
+ undef @temp;
+ @temp = split (/_/,$iPlatforms[$i]);
+ $i++;
+
+ if( $temp[0] eq "EMULATOR")
+ {
+ &SmokeTestSuite::BuildAndPublish("$temp[1]");
+ CheckPlatsecErrors("$temp[1]");
+ }
+ else
+ {
+
+ if(3 == scalar(@temp)) # there are 3 arguments, so this will be a NAND ROM
+ {
+ if((lc($temp[1]) eq "h4hrp") && (lc($temp[2]) eq "nand\(dp\)" )) # H4HRP Demand Paging ROM options is -D_NAND2
+ {
+ &SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "pagedrom", "PlatSec", "$buildNo", "-D_NAND2" );
+ }
+ elsif((lc($temp[1]) eq "h4hrp") && (lc($temp[2]) eq "nand" )) # H4 options is -D_NAND2
+ {
+ &SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo", "-D_NAND2");
+ }
+ elsif(lc($temp[1]) eq "h2") # H2 options is -D_NAND# H2 option is NAND2 due to CR 0844 (Both H2 and H4 use -D_NAND2)
+ {
+ &SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo", "-D_NAND2");
+ }
+ else # Bad option entered
+ {
+ die "SmokeTest::ProcessPlatforms error: invalid board type entered: $temp[1]. Check that Product.cfg is correct.\n";
+ }
+ }
+ else # This is the NOR ROM.
+ {
+ &SmokeTestROM::CreateAndZipROM("$temp[0]", "$temp[1]", "-DRVCT", "PlatSec", "$buildNo");
+ }
+ }
+
+ }
+
+}
+
+#
+# Build and publish based on entries in the Product.cfg file
+#
+sub ProcessPlatformsforSmoketest
+{
+
+my $i = 0;
+my @temp;
+my @iPlatforms = @_;
+
+foreach my $platform (@iPlatforms)
+ {
+ undef @temp;
+ @temp = split (/_/,$iPlatforms[$i]);
+ $i++;
+ if( $temp[0] eq "EMULATOR")
+ {
+ next;
+ }
+ my $mServ = &SmokeTestSuite::PollServers("$temp[1]");
+ unless (defined $mServ)
+ {
+ next;
+ }
+ if(3 == scalar(@temp))
+ {
+ if(lc($temp[2]) eq "nand\(dp\)" )
+ {
+ &SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ, "NAND\(DP\)\\");
+ }
+ elsif(lc($temp[2]) eq "nand")
+ {
+ &SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ, "NAND\\");
+ }
+ }
+ else
+ {
+ &SmokeTestSuite::RunRemote("$temp[0]", "$temp[1]", $mServ);
+ }
+ }
+}
+
+#
+# Check for platsec errors - checks the epocwind.out on build machine
+#
+sub CheckPlatsecErrors
+{
+ print "\n";
+ print "#\n# Check for platsec errors\n#\n";
+ print "\n";
+ PrintDateTime();
+
+ # open epocwind.out and parse for both errors and warnings
+ open EPOCWIND, "$tempDirLocation\\epocwind.out" or print "\nERROR: Cannot open EPOCWIND.OUT\n";
+ my @epocWind = ;
+ close EPOCWIND;
+
+ foreach my $tempEW (@epocWind)
+ {
+ if ($tempEW =~ m/(\*PlatSec\* ERROR)(.*)/i)
+ {
+ print "\nERROR: $_[0] - $1$2";
+ }
+ elsif ($tempEW =~ m/(\*PlatSec\* WARNING)(.*)/i)
+ {
+ print "\nWARNING: $_[0] - $1$2";
+ }
+ }
+}
+
+#
+# Take TestDriver and unpack into a given location.
+#
+sub unpackTestDriver2()
+{
+ #
+ # Unzip TestDriver
+ #
+ print "\n#\n# Unzip TestDriver\n#\n";
+ PrintDateTime();
+
+ # first remove the "old" version of test driver
+ print "\n";
+ ExecCommand("RMDIR $TestDriverDrive\\testdriver\\ /Q /S");
+
+ # now unzip the latest version of testdriver which has been synced down
+ ExecCommand("%EPOCROOT%epoc32\\tools\\unzip.exe $TestDriverLocation\\TestDriver2.zip -d $TestDriverDrive\\testdriver\\");
+
+ # now copy the latest version of testdriver_new.cmd which has been obtained
+ ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\testdriver_new.cmd $TestDriverCmd");
+
+ # now copy the latest version of logging.properties which has been obtained
+ ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\logging.properties $TestDriverDrive\\testdriver\\");
+
+ # 11-08-08 - additional steps required for SITK1.2 version of TD2
+ ExecCommand("MKDIR $TestDriverDrive\\testdriver\\eclipse\\links\\");
+
+ ExecCommand("COPY \\\\builds01\\devbuilds\\buildteam\\testdriverv2\\testdriver.link $TestDriverDrive\\testdriver\\eclipse\\links\\");
+
+ #
+ # Unzip JRE v1.5
+ #
+ print "\n";
+ print "#\n# Unzip JRE 1.5 required by TestDriver v2\n#\n";
+ print "\n";
+
+ ExecCommand("%EPOCROOT%epoc32\\tools\\unzip.exe \\\\builds01\\devbuilds\\BuildPCs\\Software\\JDK1.5.0_13\\jre1.5.zip -d $TestDriverDrive\\testdriver\\");
+
+}
+
+sub configureTestDriver2()
+{
+ #
+ # Configure TestDriver
+ #
+ print "\n";
+ print "#\n# Configure TestDriver\n#\n";
+ print "\n";
+ my $localtimes = localtime;
+ PrintDateTime();
+
+ ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config -e $BuildDir\\
+ -x $TestDriverXML
+ -l $TestDriverDrive\\TestDriver\\Results
+ --source $sourceDir
+ -s smoketest
+ -r $TestDriverDrive\\TestDriver\\Repos
+ -c $TestDriverDrive\\TestDriver\\Results");
+
+ ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config --commdb overwrite");
+ ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config --bldclean off");
+
+ # platsec for > 9.x only
+ if ($buildNo ne "8.1a" && $buildNo ne "8.1b")
+ {
+ ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config -p ON");
+ }
+
+ # Setup commdb for WINSCW smoketest
+ print "\n*** Setup commdb for WINSCW to use WinTAP ***\n";
+
+ # export smoketest_commdb.xml to a place that ced.exe can see it
+ ExecCommand("copy $SmokeTestDir\\smoketest_commdb.xml $BuildDir\\epoc32\\WINSCW\\c\\");
+ ExecCommand("$BuildDir\\epoc32\\release\\WINSCW\\udeb\\ced.exe c:\\smoketest_commdb.xml");
+
+ print "\n*** Confirm TestDriver Config ***\n";
+ ExecCommand("$TestDriverDrive\\testdriver\\testdriver.cmd config");
+ print "\n";
+}
+
+# ExecCommand
+#
+# Execute a system command, having first echoed it. Display and return the output of the command.
+#
+# Input: Command string (without final newline)
+#
+# Output: Command output (including STDERR) to STDOUT
+#
+# Return: Command output (including STDERR)
+#
+sub ExecCommand
+{
+ my $iCmd = shift;
+ print "\n================================================================\n";
+ print "Command: $iCmd\n";
+ print "----------------------------------------------------------------\n";
+ my $iRet = `$iCmd 2>&1`;
+ chomp $iRet;
+ print "Return: $iRet\n";
+ print "================================================================\n";
+ return $iRet;
+}
+
+# PrintDateTime
+#
+# Print to STDOUT, Current Date and Time
+#
+# Input: none
+#
+# Output: text to STDOUT
+#
+sub PrintDateTime
+{
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+ #### my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time);
+ $year += 1900;
+ $mon += 1;
+ printf "\n*** Current Time: %04d/%02d/%02d %02d:%02d:%02d ***\n", $year,$mon,$mday,$hour,$min,$sec;
+}
+
+1;
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/SmokeTestClient.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/SmokeTestClient.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,80 @@
+# Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# This script was born on 07/10/2004
+#
+#
+
+#!/usr/bin/perl -w
+use strict;
+use SmokeTest;
+use Getopt::Long;
+
+# Process the commandline
+my ($iSourceDir, $iTestSuite, $iProduct, $iServerPool, $iProductType, $iPublishLocation, $iBuildNumber, $iXML, $iUnzip, $iBuildDrive, $iTDDrive) = ProcessCommandLine();
+
+&SmokeTest::main($iSourceDir, $iTestSuite, $iProduct, $iServerPool, $iProductType, $iPublishLocation, $iBuildNumber, $iXML, $iUnzip, $iBuildDrive, $iTDDrive);
+
+# ProcessCommandLine
+#
+# Description
+# This function processes the commandline
+
+sub ProcessCommandLine
+{
+ my ($iHelp);
+
+ GetOptions('h' => \$iHelp, 'src=s' => \$iSourceDir, 'pool=s' => \$iServerPool, 'product=s' => \$iProduct, 'suite=s' => \$iTestSuite, 'type=s' => \$iProductType, 'publish=s' => \$iPublishLocation, 'build=s' => \$iBuildNumber, , 'xml=s' => \$iXML, 'unziptd' => \$iUnzip, 'builddrive=s' => \$iBuildDrive, 'tddrive=s' => \$iTDDrive);
+
+ if (($iHelp) || (!defined $iSourceDir) || (!defined $iTestSuite) || (!defined $iProduct) || (!defined $iBuildDrive))
+ {
+ Usage();
+ }
+
+ return ($iSourceDir, $iTestSuite, $iProduct, $iServerPool, $iProductType, $iPublishLocation, $iBuildNumber, $iXML, $iUnzip, $iBuildDrive, $iTDDrive);
+}
+
+# Usage
+#
+# Output Usage Information.
+#
+
+sub Usage
+{
+ print <= 9.5)
+ {
+####????DavidZjang#$buildrom = SmokeTest::ExecCommand ("buildrom -D_STARTUPMODE2 -D_EABI=ARMV5 -fm=\\epoc32\\rom\\include\\featuredatabase.xml h4hrp techview statauto.iby -osys$rom.bin");
+####????MCL########$buildrom = SmokeTest::ExecCommand ("buildrom -D_STARTUPMODE2 $eabi -fm=\\epoc32\\rom\\include\\featuredatabase.XML GTC_Standard statauto.iby testconfigfileparser.iby");
+ $buildrom = SmokeTest::ExecCommand ("buildrom -D_STARTUPMODE2 $eabi -fm=\\epoc32\\rom\\include\\featuredatabase.XML GTC_Standard statauto.iby testconfigfileparser.iby");
+ }
+ else
+ {
+ $buildrom = SmokeTest::ExecCommand ("buildrom -D_STARTUPMODE2 $eabi -fr=\\epoc32\\rom\\include\\featureUIDs.XML GTC_Standard statauto.iby testconfigfileparser.iby");
+ }
+ print $buildrom;
+
+ if ( ($buildrom =~ m/rombuild.*failed/i) )
+ {
+ print "\n*** Error In Smoke Test ***\n Building the ROM failed\n$!\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Building the ROM failed");
+ }
+ else
+ {
+ print "\n*** ROM built successfully ***\n";
+ }
+
+ if ($nandROM =~ /-D_NAND/)
+ {
+ # Need to rename each on individually as there are several files ending in ".img"
+ print "\n";
+ print "#\n# Renaming NAND ROMs\n#\n";
+ print "\n";
+ SmokeTest::ExecCommand ("MOVE /Y $ROFSImage $newROFSImage");
+ SmokeTest::ExecCommand ("MOVE /Y $coreImage $newCoreImage");
+
+ # Copy each of the image files to the \epoc32\rom directory
+ print "\n";
+ print "#\n# Copying NAND ROMs\n#\n";
+ print "\n";
+ SmokeTest::ExecCommand ("COPY $newROFSImage \\epoc32\\rom\\");
+ SmokeTest::ExecCommand ("COPY $newCoreImage \\epoc32\\rom\\");
+
+ # Delete the images
+ print "\n";
+ print "#\n# Deleting images\n#\n";
+ print "\n";
+ SmokeTest::ExecCommand ("DEL *.img");
+
+# passing $args[1] i.e. h2 / h4hrp to PrepareNANDROM due to CR 0844 (Both H2 and H4 use -D_NAND2)
+ &PrepareNANDROM("$args[1]");
+ }
+
+ # Rename the IMG file to sys$rom.bin
+ my $ImgDir = SmokeTest::ExecCommand ("DIR *.img");
+
+ $ImgDir =~ /(\S+\.img)/i;
+
+ #&SmokeTest::DieLog("Building ROMs failed: Cannot find .IMG file") unless defined $1;
+ print "Name of ROM : $1 \n";
+ SmokeTest::ExecCommand ("MOVE /Y $1 sys\$rom.bin");
+ print "\n";
+
+ #
+ # ZIP ROM using \epoc32\tools\zip.exe
+ #
+ print "\n";
+ print "#\n# ZIP ROM using \\epoc32\\tools\\zip.exe\n#\n";
+ print "\n";
+ SmokeTest::PrintDateTime();
+
+ # Now zip the file
+ my $zipresult = SmokeTest::ExecCommand ("$SmokeTest::BuildDir$ENV{EPOCROOT}epoc32\\tools\\zip.exe -Tv sys\$rom sys\$rom.bin");
+ print "\n";
+
+ # Test for zip errors
+ if ($zipresult =~ m/No errors detected/i) # Good case: no errors detected.
+ {
+ print "*** ROM zip successful: no errors detected ***\n";
+ }
+ elsif ($zipresult =~ m/zip error/i) # Zip error
+ {
+ print "*** Error In Smoke Test ***\n Zipping the ROM failed $!\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Zipping the ROM failed");
+ }
+ else # Worst case
+ {
+ print "*** Error In Smoke Test ***\n Zipping unable to start $!\n";
+ }
+
+ # Form the string for the temporary zip file locations
+ my $tempZipLocation = "$SmokeTest::SmokeTestDir\\$args[0]\\$args[1]";
+ if ($nandROM =~ /-D_NAND/) # Add \NAND folder if a NAND ROM is being built
+ {
+
+ if ($args[2] eq "pagedrom") # Add \NAND_DP folder if a Demand Paging NAND ROM is being built
+ {
+ $tempZipLocation .= "\\NAND\(DP\)";
+ }
+ else
+ {
+ $tempZipLocation .= "\\NAND";
+ }
+ }
+
+ # Make the temp zip folder
+ SmokeTest::ExecCommand ("MKDIR $tempZipLocation");
+ print "\n";
+
+ # Copy the ROM to the appropriate directory to be copied later
+ SmokeTest::ExecCommand ("MOVE /Y sys\$rom.zip $tempZipLocation\\sys\$rom.zip");
+
+ print "\n";
+
+ SmokeTest::PrintDateTime();
+}
+
+1;
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/SmokeTestServer.pl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/SmokeTestServer.pl Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,334 @@
+# Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# TestServer.pl
+# This script was born on 19/10/2004
+#
+#
+
+use strict;
+
+my $jobsfolder = "d:\\Jobs\\";
+
+# Loop forever
+while (1)
+{
+ open LogFile, ">>d:\\SmokeTestServerLog.txt" or die "Cannot open log file: $!";
+
+ print "\n***********************\n";
+ print "\n*** START PUBLISHER ***\n";
+ print "\n***********************\n";
+ print "\n";
+ print LogFile "\n***********************\n";
+ print LogFile "\n*** START PUBLISHER ***\n";
+ print LogFile "\n***********************\n";
+ print LogFile "\n";
+
+ my $localtimes = localtime;
+ print "\n*** Current Time: $localtimes ***\n";
+ print LogFile "\n*** Current Time: $localtimes ***\n";
+
+ #
+ # Check if there are any results ready for publishing
+ #
+ print "\n";
+ print "#\n# Check if there are any results ready for publishing\n#\n";
+ print "\n";
+ print LogFile "\n";
+ print LogFile "#\n# Check if there are any results ready for publishing\n#\n";
+ print LogFile "\n";
+
+ opendir JobDir, $jobsfolder or die "Cannot open jobs dir $jobsfolder: $!";
+
+ my @jobs = readdir(JobDir);
+
+ # to remove "." and ".." from this list
+ shift @jobs;
+ shift @jobs;
+
+ if (!scalar(@jobs))
+ {
+ print "\nNo Jobs to publish\n";
+ print LogFile "\nNo Jobs to publish\n";
+ }
+ else
+ {
+ #
+ # Loop though each directory and publish logs
+ #
+ print "\n";
+ print "#\n# Loop though each directory and publish logs\n#\n";
+ print "\n";
+ print LogFile "\n";
+ print LogFile "#\n# Loop though each directory and publish logs\n#\n";
+ print LogFile "\n";
+
+ foreach my $name (sort { $a <=> $b } @jobs)
+ {
+ if ( -d $jobsfolder.$name)
+ {
+ print "\n*** Found Job: $name ***\n";
+ print LogFile "\n*** Found Job: $name ***\n";
+
+ # Check to see if job has been completed.
+ if (isJobFinished($name))
+ {
+ #
+ # Publish the results
+ #
+ print "\n";
+ print "#\n# Publish the results\n#\n";
+ print "\n";
+ print LogFile "\n";
+ print LogFile "#\n# Publish the results\n#\n";
+ print LogFile "\n";
+
+ my $publishfile = $jobsfolder.$name."\\publish.txt";
+
+ if (-r $publishfile)
+ {
+ open (PUBLISH, $publishfile) or GoNext("Cannot find publish details for $name");
+ my $count = 0;
+ my $index = 0;
+ while (my $publishlocation = )
+ {
+ chomp $publishlocation;
+
+ $index++;
+
+ print "\nPublish Location = $publishlocation\n";
+ print LogFile "\nPublish Location = $publishlocation\n";
+
+ `mkdir $publishlocation`; # or GoNext("$publishlocation\\$name\\");
+
+ my $lookIn = "$jobsfolder$name\\output";
+ my ($source,$runid,$buildname) = getSourceDir($lookIn);
+
+ my $srcdir = $source."\\xml";
+ my $trgtdir= $publishlocation."xml\\";
+
+ my $xcopycmd= "xcopy /C /Y /E $srcdir $trgtdir ";
+ print `$xcopycmd`;
+
+ #
+ # Copy the contents of Output and reports -
+ #
+ # runXX__SymbianOS_vYY.xml/html to _Symbian_OS_vYY.xml/html
+ #
+
+ my $xmlfile = "$source\\run".$runid."_".$buildname."\.xml";
+ my $htmlfile = "$source\\run".$runid."_".$buildname."\.html";
+
+ if (-e $xmlfile) {
+
+ print "copy $xmlfile to $buildname.xml";
+ system "copy $xmlfile $publishlocation\\$buildname.xml";
+ }
+
+ if (-e $htmlfile) {
+
+ print "copy $htmlfile to $buildname.html";
+ system "copy $htmlfile $publishlocation\\$buildname.html";
+ }
+
+ print "\nNumber of Files Copied = $1\n" if $xcopycmd =~ m/(\d+)\s\w+/;
+ print LogFile "\nNumber of Files Copied = $1\n" if $xcopycmd =~ m/(\d+)\s\w+/;
+
+ $count += $1;
+
+ # The input should be copied onto \\devbuilds\master\.. but not \\devbuilds\logs\master\..
+ if ($index < 2)
+ {
+ print "\n\nCopy the Input\n";
+ $source = "$jobsfolder$name\\input\\*";
+
+ # Copy the contents of Input
+ print "\ncmd: xcopy /C /Y /E $source $publishlocation 2>&1\n";
+ print LogFile "\ncmd: xcopy /C /Y /E $source $publishlocation 2>&1\n";
+ my $xcopy = `xcopy /C /Y /E $source $publishlocation 2>&1`;
+ print $xcopy;
+
+ print "\nNumber of Files Copied = $1\n" if $xcopy =~ m/(\d+)\s\w+/;
+ print LogFile "\nNumber of Files Copied = $1\n" if $xcopy =~ m/(\d+)\s\w+/;
+ $count += $1;
+ }
+ }
+ close Publish;
+
+ print "\nTotal Number of files copied = $count\n";
+ print LogFile "\nTotal Number of files copied = $count\n";
+
+ # Minimum 3 files have to be copied - Trace.txt, sys$rom.bin and armX.tpkg
+ if ($count >= 3)
+ {
+ # it is fine to delete the jobs dir
+ print "\ncmd: rd $jobsfolder$name /Q /S 2>&1\n";
+ print LogFile "\ncmd: rd $jobsfolder$name /Q /S 2>&1\n";
+ print `rd $jobsfolder$name /Q /S 2>&1`;
+ }
+ }
+ else
+ {
+ print "\n*** Error publishing results ***\n Cannot open publish file: $jobsfolder"."$name"."\\publish.txt\n";
+ print LogFile "\n*** Error publishing results ***\n Cannot open publish file: $jobsfolder"."$name"."\\publish.txt\n";
+ }
+ }
+ else
+ {
+ print "\nThe Job $name is either still running or has encountered an error\n";
+ print LogFile "\nThe Job $name is either still running or has encountered an error\n";
+ }
+ }
+ else
+ {
+ print "*** Error ***\nDir does not exist! $jobsfolder.$name\n";
+ print LogFile "*** Error ***\nDir does not exist! $jobsfolder.$name\n";
+ }
+ }
+ }
+ close JobDir;
+
+ my $localtimes = localtime;
+ print "\n*** Current Time: $localtimes ***\n";
+ print LogFile "\n*** Current Time: $localtimes ***\n";
+
+ print "\n";
+ print "\n*********************\n";
+ print "\n*** END PUBLISHER ***\n";
+ print "\n*********************\n";
+ print "\n";
+ print "\n";
+ print LogFile "\n";
+ print LogFile "\n*********************\n";
+ print LogFile "\n*** END PUBLISHER ***\n";
+ print LogFile "\n*********************\n";
+ print LogFile "\n";
+ print LogFile "\n";
+
+ close LogFile;
+ sleep 900;
+}
+
+sub GoNext
+{
+ print "\n*** Error in Publisher ***\n $_[0] $!\n";
+ print LogFile "\n*** Error in Publisher ***\n $_[0] $!\n";
+ next;
+}
+
+# identify if a job has finished
+sub isJobFinished($) {
+
+ my $jobid = shift;
+ my @cmd_out = `testdriver.cmd jobstatus -j $jobid 2>&1`;
+
+ foreach (@cmd_out) {
+ if (m/completed/) { return 1; }
+ }
+
+ return 0;
+}
+
+sub getSourceDir($)
+{
+ my $source = shift;
+ my $runid = 0;
+ my $buildname;
+
+ #
+ # Find the correct directory to publish
+ #
+
+ if (opendir RESULTS, $source)
+ {
+ my @dirArray = readdir(RESULTS);
+
+ #print "@results";
+ # to remove "." and ".." from this list
+ shift @dirArray;
+ shift @dirArray;
+
+ if (!scalar(@dirArray))
+ {
+ print "REMARK: The result for $_[0] has an empty $source directory";
+ return;
+ }
+ else
+ {
+ print "\nContents of $source = @dirArray\n";
+ $source .= "\\$dirArray[0]";
+ # dirArray should always have just the one subdir - 0XXXX_Symbian_OS_vX.X
+
+ $buildname = $dirArray[0];
+
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ my @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(?:$_[0])/i)
+ {
+ $source .= "\\$directory";
+
+ # added this to remove udeb/xx
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(udeb|urel)/i)
+ {
+ $source .= "\\$directory";
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(^[0-9]+)/i)
+ {
+ $source .= "\\$directory";
+ $runid = $directory;
+ last;
+ }
+ }
+ }
+ last;
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+ }
+ return ($source, $runid, $buildname);
+}
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/SmokeTestSuite.pm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/SmokeTestSuite.pm Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,501 @@
+# Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# The SmokeTestSuite package contains subroutines that are needed to build a
+# testdriver test suite.
+# This script was born on 18/04/2005
+#
+#
+
+#!/usr/bin/perl -w
+package SmokeTestSuite;
+use strict;
+
+my $servicename;
+
+#
+# BuildAndPackage: Used to create a test package for remote execution on the ROM
+#
+sub BuildAndPackage
+{
+ #
+ # Build Test Package for $_[0]
+ #
+ print "\n#\n# Build Test Package for $_[0]\n#\n";
+ SmokeTest::PrintDateTime();
+ my $testbuild = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd build -p $_[0] -b udeb -s $SmokeTest::TestSuite");
+
+ # now check for results
+ $testbuild =~ m/fail\:\s(\d+)\s\%/i;
+
+ if ( ($testbuild =~ m/\*\*error\:/i) || $1 == 100 )
+ {
+ print "\nREMARK: Smoke Test *** Building the Test failed $!\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Building the Test failed");
+ }
+ else
+ {
+ print "\n*** Test Building successful ***\n";
+ }
+
+ SmokeTest::PrintDateTime();
+
+ my $testpackage = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd package -p $_[0] -b udeb -s $SmokeTest::TestSuite --tp $SmokeTest::SmokeTestDir\\$_[0].tpkg");
+ print "\n";
+
+ if (($testpackage =~ m/\*\*error/i))
+ {
+ print "\nREMARK: Smoke Test *** Building the Test Package failed\n\"$1\"\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Building the Test Package failed");
+ }
+ else
+ {
+ print "\n*** Building the Test Package successful ***\n";
+ }
+
+ SmokeTest::PrintDateTime();
+}
+
+#
+# BuildAndPublish: used to build and test the smoketest test suite on an Emulator
+#
+sub BuildAndPublish
+{
+ my $runid = 0;
+ my $buildname;
+
+ #
+ # Build Test Suite for $_[0]
+ #
+ print "\n#\n# Build Test Suite for $_[0]\n#\n";
+ SmokeTest::PrintDateTime();
+ my $testbuildwinscw = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd build -p $_[0] -b udeb -s $SmokeTest::TestSuite");
+
+ # now check for results
+ $testbuildwinscw =~ m/fail\:\s(\d+)\s\%/i;
+
+ if ( ($testbuildwinscw =~ m/\*\*error\:/i) || $1 == 100 )
+ {
+ print "\nREMARK: Smoke Test *** Building the Test for $_[0] failed $!\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Building the Test failed");
+ }
+ else
+ {
+ print "\n*** Test Build successful ***\n";
+ }
+
+ #
+ # Run Test Suite for $_[0]
+ #
+ print "\n";
+ print "#\n# Run Test Package for $_[0]\n#\n";
+ print "\n";
+ SmokeTest::PrintDateTime();
+
+ SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd run -p $_[0] -b udeb -s $SmokeTest::TestSuite");
+
+ SmokeTest::PrintDateTime();
+
+ #
+ # Publish results of emulator onto publish server
+ #
+ print "\n";
+ print "#\n# Publish results of emulator onto publish server\n#\n";
+ print "\n";
+
+ #
+ # Find the correct directory to publish
+ #
+ my $source = "$SmokeTest::TestDriverDrive\\TestDriver\\Results";
+ if (opendir Results, $source)
+ {
+ my @dirArray = readdir(Results);
+
+ #print "@results";
+ # to remove "." and ".." from this list
+ shift @dirArray;
+ shift @dirArray;
+
+ if (!scalar(@dirArray))
+ {
+ print "REMARK: The emulator for $_[0] has an empty $source directory";
+ return;
+ }
+ else
+ {
+ print "\nContents of $source = @dirArray\n";
+ $source .= "\\$dirArray[0]";
+ # dirArray should always have just the one subdir - 0XXXX_Symbian_OS_vX.X
+
+ $buildname = $dirArray[0];
+
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(?:$_[0])/i)
+ {
+ $source .= "\\$directory";
+
+ # added this to remove udeb/xx
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(udeb|urel)/i)
+ {
+ $source .= "\\$directory";
+ if (opendir tempDir, "$source")
+ {
+ # to remove "." and ".." from this list
+ @dirArray = readdir(tempDir);
+ shift @dirArray;
+ shift @dirArray;
+
+ print "\nContents of $source = @dirArray\n";
+
+ my @iNumericDirList = ();
+ foreach my $directory (@dirArray)
+ {
+ if ($directory =~ /(^[0-9]+)/i)
+ {
+ push @iNumericDirList, $directory;
+ }
+ }
+ @iNumericDirList = sort { $b <=> $a } @iNumericDirList;
+ $runid = $iNumericDirList[0];
+ $source .= "\\$runid";
+ last;
+ }
+ last;
+ }
+ }
+ }
+
+ }
+ }
+
+ print "\nThe final source directory = $source\n";
+ }
+ else
+ {
+ print "REMARK: The emulator for $_[0] has an empty $source directory";
+ return;
+ }
+ }
+ my $emulatorpublish = "$SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\SmokeTest\\Emulator\\$_[0]";
+
+ SmokeTest::ExecCommand ("MKDIR $emulatorpublish"); # or GoNext("$publishlocation\\$name\\");
+
+ SmokeTest::ExecCommand ("XCOPY /C /Y /E $source\\xml $emulatorpublish\\xml\\");
+
+ #
+ # Copy runXX__SymbianOS_vYY.xml/html to _Symbian_OS_vYY.xml/html
+ #
+
+ my $xmlfile = "$source\\run".$runid."_".$buildname."\.xml";
+ my $htmlfile = "$source\\run".$runid."_".$buildname."\.html";
+
+ if (-e $xmlfile)
+ {
+ SmokeTest::ExecCommand ("COPY $xmlfile $emulatorpublish\\$buildname.xml");
+ }
+
+ if (-e $htmlfile)
+ {
+ SmokeTest::ExecCommand ("COPY $htmlfile $emulatorpublish\\$buildname.html");
+ }
+
+ #
+ # Publish results of emulator onto logs dir
+ #
+ print "\n";
+ print "#\n# Publish results of emulator onto Logs Dir\n#\n";
+ print "\n";
+
+ my $emulatorpublish = "$SmokeTest::LogsDir\\SmokeTest\\Emulator\\$_[0]\\";
+
+ SmokeTest::ExecCommand ("MKDIR $emulatorpublish"); # or GoNext("$publishlocation\\$name\\");
+
+ SmokeTest::ExecCommand ("XCOPY /C /Y /E $source $emulatorpublish");
+ }
+ else
+ {
+ print "REMARK: Cannot open dir $source: $!";
+ return;
+ }
+ SmokeTest::PrintDateTime();
+}
+
+#
+# PollServers: Polls all the servers from the Pool and picks out the one with the shortest queue.
+#
+sub PollServers
+{
+ #
+ # Parse ENV and create an array of smoketest servers for $_[0]
+ #
+ print "\n";
+ print "#\n# Parse ENV and create an array of smoketest servers for $_[0]\n#\n";
+ print "\n";
+ SmokeTest::PrintDateTime();
+
+ if (($_[0] eq "Lubbock") || ($_[0] eq "LUBBOCK"))
+ {
+ $SmokeTest::servicename = "RemoteTestDriverLubbock";
+ }
+ elsif ($_[0] eq "H2")
+ {
+ $SmokeTest::servicename = "RemoteTestDriverH2";
+ }
+ elsif ($_[0] eq "H4HRP")
+ {
+ $SmokeTest::servicename = "RemoteTestDriverH4HRP";
+ }
+ else
+ {
+ &SmokeTest::DieLog("Cannot poll serverpool for pool \"$_[0]\"");
+ }
+
+ my @servers = split /\#/, $SmokeTest::serverpool;
+ if (@servers < 1)
+ {
+ &SmokeTest::DieLog("*** Error In Smoke Test ***\nNo SmokeTest Servers specified for $_[0]$!\n");
+ }
+ else
+ {
+ print "\n*** Retrieved Pool of Smoke Test Servers from ENV for $_[0]***\n";
+ }
+
+ #
+ # Poll each of the smoke test servers and parse the results
+ #
+ print "\n";
+ print "#\n# Poll each of the smoke test servers and parse the results\n#\n";
+ print "\n";
+
+ my %serverlist;
+
+ print "Checking TestDriver Version\n";
+ SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd version");
+
+ foreach my $server (@servers)
+ {
+ print "Polling Server: $server\n";
+ my $masterstatus = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd masterstatus --srv //$server/$SmokeTest::servicename");
+
+ my $value = -2;
+ if ($masterstatus =~ m/Master: TestDriver is currently (....)/i)
+ {
+ if ($1 eq 'free')
+ {
+ #print "Free!\n";
+ $value = 0;
+ }
+ else
+ {
+ $masterstatus =~ m/are\s+(\w+)\s+jobs/i;
+ if ($1 =~ m/\D+/)
+ {
+ $value = 1;
+ }
+ else
+ {
+ $value = $1 + 1;
+ }
+ }
+ }
+ else
+ {
+ # The master is not running a service
+ $value = -1;
+ }
+ $serverlist{$server} = $value;
+ print "\n";
+ }
+
+ #
+ # Decide which server to use
+ #
+ print "\n";
+ print "#\n# STEP8 Decide which server to use\n#\n";
+ print "\n";
+
+ my $masterserver;
+
+ # Loop through first time only to print out all the available servers
+ print "\nAvailable Servers\n";
+ foreach my $servername (sort { $serverlist{$a} <=> $serverlist{$b} } keys %serverlist)
+ {
+ print "\n$servername : number in queue are $serverlist{$servername}\n";
+ }
+
+ # Loop through second time to actually select the correct server
+ foreach my $servername (sort { $serverlist{$a} <=> $serverlist{$b} } keys %serverlist)
+ {
+ if ($serverlist{$servername} > -1)
+ {
+ $masterserver = $servername;
+ last;
+ }
+ }
+
+ if (defined $masterserver)
+ {
+ print "\n*** The Smoke Test Server to be used for $_[0] is $masterserver ***\n";
+ }
+ else
+ {
+ print "\nREMARK: Smoke Test *** No available Smoke Test Servers for $_[0] \n";
+ #&SmokeTest::DieLog("Error In Smoke Test: No available Smoke Test Servers for $_[0]");
+ }
+ SmokeTest::PrintDateTime();
+ return $masterserver;
+}
+
+#
+# Usage: RunRemote(Architecture, Testing Board, Server)
+#
+sub RunRemote
+{
+ my $masterserver = $_[2];
+
+
+ #
+ # Call TestDriver runremote for $_[0]
+ #
+ print "\n";
+ print "#\n# Call TestDriver runremote for $_[0]\n#\n";
+ print "\n";
+ SmokeTest::PrintDateTime();
+
+ my $tempZipLocation = "$SmokeTest::SmokeTestDir\\$_[0]\\$_[1]";
+ if ($_[3] eq "NAND\\")
+ {
+ $tempZipLocation .= "\\NAND";
+ }
+ elsif ($_[3] eq "NAND\(DP\)\\")
+ {
+ $tempZipLocation .= "\\NAND\(DP\)";
+ }
+
+ SmokeTest::ExecCommand ("COPY /Y $tempZipLocation\\sys\$rom.zip $SmokeTest::SmokeTestDir\\sys\$rom.zip");
+
+ # Decide whether this is a platsec ROM or not
+ my $platsec;
+ if ($SmokeTest::buildNo eq "9.1" || $SmokeTest::buildNo eq "9.2" || $SmokeTest::buildNo eq "9.3" || $SmokeTest::buildNo eq "Future" || $SmokeTest::buildNo eq "9.4" || $SmokeTest::buildNo eq "9.5" || $SmokeTest::buildNo eq "9.6" || $SmokeTest::buildNo eq "tb91")
+ {
+ $platsec = "ON";
+ }
+ else
+ {
+ $platsec = "OFF";
+ }
+
+ # calling testdriver for $_[0]
+ my $runremote = SmokeTest::ExecCommand ("$SmokeTest::TestDriverCmd runremote -m async -i $SmokeTest::SmokeTestDir --tp $_[0].tpkg -r sys\$rom.zip --srv //$masterserver/$SmokeTest::servicename --platsec $platsec --testexec ON");
+
+ #
+ # Parse output to get the job number or error
+ #
+ print "\n";
+ print "#\n# Parse output to get the job number or error\n#\n";
+ print "\n";
+
+ my $jobid;
+
+ if ($runremote =~ m/job id/i)
+ {
+ $runremote =~ m/job id: (\d+)/i;
+ $jobid = $1;
+ print "\n*** Job submitted successfully ***\n\nJob Id = $jobid\n";
+ }
+ else
+ {
+ print "\nREMARK: Smoke Test Job Submission failed\n";
+ #&SmokeTest::DieLog("Error In Smoke Test: Submitting the Job failed");
+ return;
+ }
+
+ #
+ # Create a text file with publish details
+ #
+ print "\n";
+ print "#\n# Create a text file with publish details\n#\n";
+ print "\n";
+
+ my $publishstring;
+
+ $publishstring = "Publish: $SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\Smoketest\\$_[0]\\$_[1]\\";
+ print "$publishstring";
+
+ if ( (defined $SmokeTest::PublishServer) && (defined $SmokeTest::ProductType) && (defined $SmokeTest::BuildNum) )
+ {
+ open PublishFile, ">$_[0]$_[1].txt" or &SmokeTest::DieLog("Cannot open File $_[0]$_[1].txt: $!\n");
+ $publishstring = "$SmokeTest::PublishServer\\$SmokeTest::ProductType\\$SmokeTest::BuildNum\\logs\\Smoketest\\$_[0]\\$_[1]\\";
+ if ($_[3] eq "NAND\\")
+ {
+ $publishstring .= "NAND\\";
+ }
+ elsif ($_[3] eq "NAND\(DP\)\\")
+ {
+ $publishstring .= "NAND\(DP\)\\";
+ }
+ print PublishFile "$publishstring";
+ $publishstring = "\n$SmokeTest::PublishServer\\$SmokeTest::ProductType\\logs\\$SmokeTest::BuildNum\\Smoketest\\$_[0]\\$_[1]\\";
+ if ($_[3] eq "NAND\\")
+ {
+ $publishstring .= "NAND\\";
+ }
+ elsif ($_[3] eq "NAND\(DP\)\\")
+ {
+ $publishstring .= "NAND\(DP\)\\";
+ }
+ print PublishFile "$publishstring";
+ close PublishFile;
+ print "\n*** Publish file created successfully ***\n";
+ }
+ else
+ {
+ print "\nREMARK: Smoke Test *** Could not Create Publish File\n$!";
+ #&SmokeTest::DieLog("Error In Smoke Test: Could not Create Publish File");
+ }
+
+ #
+ # Copy This publish file to the correct directory
+ #
+ print "\n";
+ print "#\n# Copy This publish file to the correct directory \n#\n";
+ print "\n";
+
+ ###print "\nabout to move /Y $_[0]$_[1].txt \\\\$masterserver\\Jobs\\$jobid\\publish.txt\n";
+ SmokeTest::ExecCommand ("MOVE /Y $_[0]$_[1].txt \\\\$masterserver\\Jobs\\$jobid\\publish.txt");
+
+ SmokeTest::PrintDateTime();
+}
+
+1;
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/System/Group/Smoketest_System.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/System/Group/Smoketest_System.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Smoketest_Agenda.mmp
+// using relative paths for sourcepath and user includes
+//
+//
+
+TARGET Smoketest_System.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7773
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY WriteUserData ReadUserData
+
+SOURCEPATH ..\Src
+
+SOURCE TestSystemBase.cpp
+
+USERINCLUDE ..\Inc ..\..\Group
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\test
+
+LIBRARY EUSER.LIB
+LIBRARY EIKSRV.LIB
+LIBRARY TESTEXECUTELOGCLIENT.LIB
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/System/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/System/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,19 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For System smoketest
+//
+//
+
+PRJ_TESTMMPFILES
+Smoketest_System.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/System/Inc/TestSystemBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/System/Inc/TestSystemBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,46 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+#ifndef TEST_SYSTEM_BASE_H
+#define TEST_SYSTEM_BASE_H
+
+#include
+#include
+
+class CEikUndertaker;
+
+class CSystemTestBase : public MEikUndertakerObserver
+ {
+public:
+ static CSystemTestBase* NewL();
+ ~CSystemTestBase();
+
+protected:
+ CSystemTestBase();
+ void ConstructL();
+
+protected: // From MEikUndertakerObserver
+ void HandleThreadExitL(RThread& aThread);
+
+protected:
+ CEikUndertaker* iUndertaker;
+ RTestExecuteLogServ iLogger;
+ TInt iExitReason;
+ TExitCategoryName iExitCategory;
+ };
+
+
+#endif // TEST_SYSTEM_BASE_H
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/System/ReadMe.doc
Binary file common/tools/ats/smoketest/System/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/System/Src/TestSystemBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/System/Src/TestSystemBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,116 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "TestSystemBase.h"
+
+// Global Vars
+_LIT(KTestExecuteLog,"c:\\Logs\\TestExecute\\smoketest_system_temp.htm");
+_LIT(KPanicText,"The following Panic has occured: Thread Name = %S Exit Reason = %d Exit Category = %S");
+
+CSystemTestBase* CSystemTestBase::NewL()
+ {
+ CSystemTestBase* self=new(ELeave) CSystemTestBase;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+ return(self);
+ }
+
+void CSystemTestBase::ConstructL()
+ {
+ iUndertaker=CEikUndertaker::NewL(*this);
+ User::LeaveIfError(iLogger.Connect());
+ User::LeaveIfError(iLogger.CreateLog(KTestExecuteLog,RTestExecuteLogServ::ELogModeAppend));
+ }
+
+CSystemTestBase::CSystemTestBase()
+ {
+ // do nothing
+ }
+
+CSystemTestBase::~CSystemTestBase()
+ {
+ delete iUndertaker;
+ iLogger.Close();
+ }
+
+void CSystemTestBase::HandleThreadExitL(RThread& aThread)
+ {
+ TExitType exitType=aThread.ExitType();
+ if (exitType==EExitPanic)
+ {
+ CActiveScheduler::Stop();
+ iExitReason = aThread.ExitReason();
+ iExitCategory = aThread.ExitCategory();
+ TBuf<100> iName(aThread.FullName());
+ iLogger.WriteFormat(KPanicText, &iName, iExitReason, &iExitCategory);
+ User::Panic(iExitCategory,iExitReason);
+ }
+ }
+
+//LOCAL_C TInt PanicThread(TAny*)
+// {
+// _LIT(PanicReason, "Just, why not");
+// TInt iPanicInt = 666;
+// User::Panic(PanicReason, iPanicInt);
+// return iPanicInt;
+// }
+
+LOCAL_C void MainL()
+ {
+ // Construct and install the active scheduler
+ CActiveScheduler* myScheduler = new(ELeave) CActiveScheduler;
+ CleanupStack::PushL(myScheduler);
+ CActiveScheduler::Install(myScheduler);
+
+ CSystemTestBase* iTempBase = CSystemTestBase::NewL();
+
+ // The following is just test code that spawns a thread and makes it panic
+ //RThread iPanicThread;
+ //_LIT(PanicThreadTest, "Undertaker Panic Thread Test");
+
+ //User::LeaveIfError(iPanicThread.Create(PanicThreadTest(), &PanicThread, KDefaultStackSize, 0x100, 0x100, NULL));
+ //iPanicThread.SetPriority(EPriorityAbsoluteHigh);
+ //iPanicThread.Resume();
+
+ CActiveScheduler::Start();
+
+ for (;;)
+ {
+ User::After(100000);
+ }
+ }
+
+GLDEF_C TInt E32Main()
+/**
+ * Executable Entry Point
+ * Top level always creates TRAP harness.
+ * Calls MainL() inside the TRAP harness
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+ // should never reach this point if some thread has panicked already
+ _LIT(KTestPanicReason,"Trap");
+ __ASSERT_ALWAYS(!err, User::Panic(KTestPanicReason,err));
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return KErrNone;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/ConsoleAlarmAlertServer.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/ConsoleAlarmAlertServer.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,44 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET ConsoleAlarmAlertServer.dll
+TARGETTYPE dll
+CAPABILITY All -TCB
+UID 0x1000008D 0x101F502A
+VENDORID 0x70000001
+
+SOURCEPATH ..\ConsoleAlarmAlertServer\Source
+
+SOURCE ConsoleAlarmAlertServer.cpp
+SOURCE ConsoleAlarmAlertSession.cpp
+SOURCE ConsoleAlarmAlertConsole.cpp
+SOURCE ConsoleAlarmAlertServerMain.cpp
+SOURCE ConsoleAlarmAlertLEDFlasher.cpp
+
+USERINCLUDE ..\ConsoleAlarmAlertServer\Include
+//USERINCLUDE ..\AlarmAlert\Shared
+//USERINCLUDE ..\Shared\Include
+
+SYSTEMINCLUDE \Epoc32\Include
+
+LIBRARY euser.lib
+LIBRARY hal.lib
+LIBRARY AlarmShared.lib
+
+DEFFILE ConsoleAlarmAlertServer.DEF
+
+START WINS
+ baseaddress 0x40700000
+END
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertConsole.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertConsole.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,91 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONSOLEALARMALERTCONSOLE_H__
+#define __CONSOLEALARMALERTCONSOLE_H__
+
+// System includes
+#include
+
+// User includes
+#include "asaltdefs.h"
+
+// Type definitions
+
+// Constants
+
+// Classes referenced
+class CConsoleAlarmAlertSession;
+
+// Enumerations
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertConsole (header)
+///////////////////////////////////////////////////////////////////////////////////////
+class CConsoleAlarmAlertConsole : public CActive
+ {
+///////////////////////////////////////////////////////////////////////////////////////
+public: // CONSTRUCT / DESTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ CConsoleAlarmAlertConsole(CConsoleAlarmAlertSession& aSession);
+ ~CConsoleAlarmAlertConsole();
+
+///////////////////////////////////////////////////////////////////////////////////////
+public: // ACCESS
+///////////////////////////////////////////////////////////////////////////////////////
+ void GetKey();
+ void CancelKey();
+ void DecCounter();
+ void UpdateDisplay();
+ TInt GetTimeInterval() const;
+ void SetVisibility(TInt aVis);
+ void SetAlertState(TInt aFlags);
+
+///////////////////////////////////////////////////////////////////////////////////////
+protected: // FROM CActive
+///////////////////////////////////////////////////////////////////////////////////////
+ void RunL();
+ void DoCancel();
+
+///////////////////////////////////////////////////////////////////////////////////////
+protected: // INTERNAL METHODS
+///////////////////////////////////////////////////////////////////////////////////////
+ void Hide();
+ void CreateWin();
+ void DoDeferTime(TASAltAlertServerResponse aResponse);
+
+ static TBool CountDownCallBack(TAny* aSelf);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // MEMBER DATA
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TInt iAlertState;
+
+ TInt iTimeInterval;
+
+ CPeriodic* iCountDown;
+
+ CConsoleBase* iWin;
+
+ CConsoleAlarmAlertSession& iSession;
+
+ friend class CConsoleAlarmAlertSession;
+
+ TInt iInstructionIndex;
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertLEDFlasher.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertLEDFlasher.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,75 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONSOLEALARMALERTLEDFLASHER_H__
+#define __CONSOLEALARMALERTLEDFLASHER_H__
+
+// System includes
+#include
+
+// User includes
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertLEDFlasher (header)
+///////////////////////////////////////////////////////////////////////////////////////
+class CConsoleAlarmAlertLEDFlasher : public CTimer
+ {
+///////////////////////////////////////////////////////////////////////////////////////
+public: // STATIC CONSTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ static CConsoleAlarmAlertLEDFlasher* NewL();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL CONSTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ CConsoleAlarmAlertLEDFlasher();
+
+///////////////////////////////////////////////////////////////////////////////////////
+public: // ACCESS
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TInt Start();
+
+ void Stop();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // FROM CActive
+///////////////////////////////////////////////////////////////////////////////////////
+
+ void RunL();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TInt SetRedLedOn(TBool aOn);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // MEMBER DATA
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TBool iLedOn;
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,87 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TALARMALERTSERVER.H
+//
+//
+
+#ifndef __CONSOLEALARMALERTSERVER_H__
+#define __CONSOLEALARMALERTSERVER_H__
+
+// System includes
+#include
+
+// User includes
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+class CTestAlarmAlertConsole;
+class CConsoleAlarmAlertSession;
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertServer (header)
+///////////////////////////////////////////////////////////////////////////////////////
+class CConsoleAlarmAlertServer : public CPolicyServer
+ {
+///////////////////////////////////////////////////////////////////////////////////////
+public: // STATIC CONSTRUCT / DESTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ static CConsoleAlarmAlertServer* NewLC();
+ ~CConsoleAlarmAlertServer();
+
+public:
+ inline void AddResponseArray(TAny* aResponseArray);
+ void SetAttachment(HBufC8* aData);
+ inline HBufC8* Attachment() const;
+ inline TAny* ResponseArray() const;
+ inline CConsoleAlarmAlertSession* WaitingSession() const;
+ inline void SetNotifying(TBool aIsNotifying);
+ inline TBool IsNotifying() const;
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL CONSTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ CConsoleAlarmAlertServer();
+ void ConstructL();
+
+///////////////////////////////////////////////////////////////////////////////////////
+public: // FROM CServer2
+///////////////////////////////////////////////////////////////////////////////////////
+ CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // FROM CActive
+///////////////////////////////////////////////////////////////////////////////////////
+ TInt RunError(TInt aError);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // MEMBER DATA
+///////////////////////////////////////////////////////////////////////////////////////
+ TAny* iInstructionSet;
+ HBufC8* iAttachment;
+ CConsoleAlarmAlertSession* iWaitingSession;
+ TBool iIsNotifying;
+ };
+
+// inline functions
+void CConsoleAlarmAlertServer::AddResponseArray(TAny* aResponseArray) { iInstructionSet = aResponseArray; }
+HBufC8* CConsoleAlarmAlertServer::Attachment() const { return iAttachment; }
+TAny* CConsoleAlarmAlertServer::ResponseArray() const { return iInstructionSet; }
+CConsoleAlarmAlertSession* CConsoleAlarmAlertServer::WaitingSession() const { return iWaitingSession; }
+void CConsoleAlarmAlertServer::SetNotifying(TBool aIsNotifying) { iIsNotifying = aIsNotifying; }
+TBool CConsoleAlarmAlertServer::IsNotifying() const { return iIsNotifying; }
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertServerMain.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertServerMain.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,54 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONSOLEALARMALERTSERVERMAIN_H__
+#define __CONSOLEALARMALERTSERVERMAIN_H__
+
+// System includes
+#include
+
+// User includes
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> ConsoleAlarmAlertServer (header)
+///////////////////////////////////////////////////////////////////////////////////////
+class ConsoleAlarmAlertServer
+/**
+@internalAll
+@released
+*/
+ {
+///////////////////////////////////////////////////////////////////////////////////////
+public: // ACCESS
+///////////////////////////////////////////////////////////////////////////////////////
+ IMPORT_C static void StartConsoleAlarmAlertServerL(TAny* instructionSet = NULL);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL
+///////////////////////////////////////////////////////////////////////////////////////
+ static TInt StartServerThreadFunction(TAny* instructionSet = NULL);
+ static void StartServerL(TAny* instructionSet = NULL);
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertSession.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Include/ConsoleAlarmAlertSession.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,137 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONSOLEALARMALERTSESSION_H__
+#define __CONSOLEALARMALERTSESSION_H__
+
+// System includes
+#include
+
+// User includes
+#include "asaltdefs.h"
+#include "asshdalarm.h"
+
+// Type definitions
+
+// Constants
+
+// Classes referenced
+class CConsoleAlarmAlertConsole;
+class CConsoleAlarmAlertLEDFlasher;
+class CConsoleAlarmAlertServer;
+// Enumerations
+
+
+struct TAgnAlarmInfo
+ /**
+ Copy of System-Wide Unique Agenda Entry Reference defined in agmalarm.h
+ */
+ {
+ TUid iAlarmCategory;
+ TUint32 iAgnUniqueId;
+ TFileName iFileName;
+ };
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertSession (header)
+///////////////////////////////////////////////////////////////////////////////////////
+class CConsoleAlarmAlertSession : public CSession2
+ {
+///////////////////////////////////////////////////////////////////////////////////////
+public: // STATIC CONSTRUCT / DESTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ static CConsoleAlarmAlertSession* NewL(CConsoleAlarmAlertServer* aServer);
+ ~CConsoleAlarmAlertSession();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL CONSTRUCT
+///////////////////////////////////////////////////////////////////////////////////////
+ CConsoleAlarmAlertSession(CConsoleAlarmAlertServer* aServer);
+ void ConstructL();
+
+///////////////////////////////////////////////////////////////////////////////////////
+public: // ACCESS
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TTime DeferTime() const;
+
+ inline const TASShdAlarm& Alarm() const { return iAlarm; }
+
+ inline TInt AlarmDataSize() const { return iAlarmAssociatedDataSize; }
+
+ inline const TAgnAlarmInfo& AlarmData() const { return iAlarmData; }
+
+ void Notify(TASAltAlertServerResponse aFlag);
+
+ void Notify(TASAltAlertServerResponse aFlag, const TTime& aDeferTime);
+
+ TAny * InstructionSet();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // FROM CSession2
+///////////////////////////////////////////////////////////////////////////////////////
+ void ServiceL(const RMessage2& aMessage);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // CMD - DEBUG ONLY
+///////////////////////////////////////////////////////////////////////////////////////
+ TBool CmdL();
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // INTERNAL METHODS
+///////////////////////////////////////////////////////////////////////////////////////
+
+ void SetAlarmL(const RMessage2& aMessage);
+
+ void GetUserTimeL(const RMessage2& aMessage);
+
+ void SetDeferTimeL(const RMessage2& aMessage);
+
+ static TBool SoundPlaybackCallbackL(TAny* aSelf);
+
+///////////////////////////////////////////////////////////////////////////////////////
+private: // MEMBER DATA
+///////////////////////////////////////////////////////////////////////////////////////
+
+ TTime iDeferTime;
+
+ TASShdAlarm iAlarm;
+
+ TInt iAlarmAssociatedDataSize;
+
+ TAgnAlarmInfo iAlarmData;
+
+ TBool iLoggedOn;
+
+ TBool iHasMessage;
+
+ TBool iMsgComplete;
+
+ RMessage2 iMsgPtr;
+
+ CPeriodic* iSoundCallbackTimer;
+
+ CConsoleAlarmAlertLEDFlasher* iSoundLEDFlasher;
+
+ CConsoleAlarmAlertConsole* iConsole;
+
+ CConsoleAlarmAlertServer* iServer;
+
+ TAny* iInstructionSet;
+
+ TBool iInstructionSetFound;
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertConsole.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertConsole.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,402 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "consolealarmalertconsole.h"
+
+// System includes
+#include
+#include
+#include
+
+// User includes
+#include "asaltdefs.h"
+#include "consolealarmalertsession.h"
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertConsole (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
+CConsoleAlarmAlertConsole::CConsoleAlarmAlertConsole(CConsoleAlarmAlertSession& aSession)
+: CActive(CActive::EPriorityLow), iSession(aSession), iInstructionIndex(0)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+//*************************************************************************************
+CConsoleAlarmAlertConsole::~CConsoleAlarmAlertConsole()
+ {
+ Cancel();
+ Hide();
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::GetKey()
+ {
+ if (iWin && !IsActive())
+ {
+ SetActive();
+ iWin->Read(iStatus);
+ }
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::CancelKey()
+ {
+ if (IsActive())
+ Cancel();
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::DecCounter()
+ {
+ if (iTimeInterval > 0)
+ {
+ --iTimeInterval;
+ UpdateDisplay();
+ }
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::UpdateDisplay()
+ {
+ TBuf<180> buf;
+ _LIT(KEalwlAlarmSoundOff, "Off");
+ _LIT(KEalwlAlarmSoundOn, "On");
+ _LIT(KEalwlStatusEnabled, "Are");
+ _LIT(KEalwlStatusNotEnabled, "Are Not");
+ _LIT(KEalwlStatusIs, "Is");
+ _LIT(KEalwlStatusIsNo, "Is No");
+ //
+ if (!iWin)
+ return;
+ iWin->SetCursorPosAbs(TPoint(0,0));
+
+ // MESSAGE
+ buf.Format(_L("Message : %S"), &iSession.Alarm().Message());
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+
+ // DATA
+ if (iSession.Alarm().HasAssociatedData())
+ {
+ const TAgnAlarmInfo data = iSession.AlarmData();
+ const TUid KUidAgendaModelAlarmCategory = { 0x101F4A70 };
+ if (data.iAlarmCategory == KUidAgendaModelAlarmCategory)
+ {
+ _LIT(KEalwlAgendaData,"\ndata: agenda filename \"%S\"");
+ if (data.iFileName.Length() < 40)
+ buf.Format(KEalwlAgendaData,&data.iFileName);
+ else
+ {
+ TBuf<40> temp = data.iFileName.Left(40);
+ buf.Format(KEalwlAgendaData,&temp);
+ }
+ }
+ else
+ buf.Format(_L("\nAlarm has %d data bytes"), iSession.AlarmDataSize());
+ }
+ else
+ {
+ buf = _L("\nAlarm has no associated data");
+ }
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+
+ // DEFER TIME
+ if (iSession.DeferTime() != Time::NullTTime())
+ {
+ TDateTime dateTime(iSession.DeferTime().DateTime());
+ buf.Format(_L("\nDefer : %02d:%02d"), dateTime.Hour(), dateTime.Minute());
+ }
+ else
+ buf=_L("\nNULL defer time");
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+
+ // TIME INTERVAL
+ buf.Format(_L("\nCurrent time interval is %d minutes"), GetTimeInterval());
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+
+ // STATE FLAGS
+ buf.Format(_L("\nAlarm sounds are %S"),(iAlertState&EASAltStateFlagsSilentRunning)?&KEalwlAlarmSoundOff:&KEalwlAlarmSoundOn);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+ buf.Format(_L("\nAlarm sounds %S paused"),(iAlertState&EASAltStateFlagsSoundIsPaused)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+ buf.Format(_L("\nAlarm sounds %S deferred"),(iAlertState&EASAltStateFlagsInQuietPeriod)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+ buf.Format(_L("\nThere %S more than one unacknowledged alarms"),(iAlertState&EASAltStateFlagsMoreThanOneDueAlarm)?&KEalwlStatusEnabled:&KEalwlStatusNotEnabled);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+ buf.Format(_L("\nThere %S memory to snooze alarms"),(iAlertState&EASAltStateFlagsNoMemoryForSnoozeAlarm)?&KEalwlStatusIsNo:&KEalwlStatusIs);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+ buf.Format(_L("\nThere %S an alarm sound to play"),(iAlertState&EASAltStateFlagsAlarmHasNoSoundFileName)?&KEalwlStatusIsNo:&KEalwlStatusIs);
+ iWin->Write(buf);
+ iWin->ClearToEndOfLine();
+
+ // COMMAND PROMPTS
+ iWin->Write(_L("\nENTER = Silence alarm SPACE = Quiet Period"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\nESCAPE = Acknowledge alarm A = Acknowledge all"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\nP = Pause alarm sound TAB = Snooze alarm"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\n1 = 1 min sound interval 0 = 0 mins sound interval"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\n+ = Increase int. and pause - = Decrease int. and pause"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\n! = Kill alarm alert server"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\n"));
+ iWin->ClearToEndOfLine();
+ iWin->Write(_L("\r"));
+ //
+ if(!iSession.InstructionSet()) //Get user input if instruction set unspecified.
+ GetKey();
+ else if (iInstructionIndex >= static_cast*>(iSession.InstructionSet())->Count()) //Get user input if program has already iterated thru entire instruction set.
+ GetKey();
+ else //Use the command in the instruction set, instead of waiting for user input.
+ {
+ if(!IsActive())
+ {
+ iStatus = KRequestPending;
+ TRequestStatus* ptrStatus = &iStatus;
+ User::RequestComplete( ptrStatus, KErrNone );
+ SetActive();
+ }
+ }
+ }
+
+//*************************************************************************************
+TInt CConsoleAlarmAlertConsole::GetTimeInterval() const
+ {
+ return(iTimeInterval);
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::SetVisibility(TInt aVis)
+ {
+ if (!aVis)
+ Hide();
+ else if (!iWin)
+ {
+ // Create a new window, since cannot set order of console windows
+ CreateWin();
+ UpdateDisplay();
+ }
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::SetAlertState(TInt aFlags)
+ {
+ iAlertState = aFlags;
+ UpdateDisplay();
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::RunL()
+ {
+ if (iStatus.Int() == KErrCancel)
+ return;
+
+ __ASSERT_DEBUG(iWin, User::Invariant());
+ TInt key = iWin->KeyCode();
+ if(iSession.InstructionSet() && iInstructionIndex < static_cast*>(iSession.InstructionSet())->Count())
+ {
+ RArray* temp = static_cast*>(iSession.InstructionSet());
+ key = (*temp)[iInstructionIndex++];
+ GetKey();
+ }
+ else
+ {
+ GetKey();
+ if ((key>=EKeyF1 && key<=EKeyF12) || key==EKeyTab)
+ {
+ DoDeferTime(EASAltAlertServerResponseSnooze);
+ }
+ }
+
+ switch (key)
+ {
+ // ACKNOWLEDGE CURRENT
+ case EKeyEscape:
+ iSession.Notify(EASAltAlertServerResponseClear);
+ return;
+ // ACKNOWLEDGE ALL
+ case 'a':
+ case 'A':
+ iSession.Notify(EASAltAlertServerResponseClearAll);
+ return;
+ // QUIET PERIOD
+ case EKeySpace:
+ DoDeferTime(EASAltAlertServerResponseQuietPeriod);
+ break;
+ // PAUSE SOUND
+ case 'p':
+ case 'P':
+ DoDeferTime(EASAltAlertServerResponsePauseSound);
+ break;
+ // SILENCE ALL SOUND
+ case EKeyEnter:
+ iSession.Notify(EASAltAlertServerResponseSilence);
+ break;
+ // INTERVAL 1 MINUTE
+ case '1':
+ iTimeInterval=1;
+ iSession.Notify(EASAltAlertServerResponsePauseSound);
+ break;
+ // INTERVAL 0 MINUTES
+ case '0':
+ iTimeInterval=0;
+ iSession.Notify(EASAltAlertServerResponsePauseSound);
+ break;
+ // PAUSE +
+ case '=':
+ case '+':
+ iTimeInterval++;
+ iSession.Notify(EASAltAlertServerResponsePauseSound);
+ break;
+ // PAUSE -
+ case '-':
+ iTimeInterval--;
+ iSession.Notify(EASAltAlertServerResponsePauseSound);
+ break;
+
+ // QUIT
+ case '!':
+ CActiveScheduler::Stop();
+ break;
+ }
+
+ TBuf<10> buf;
+ buf.Format(_L("'%c',"), key);
+ iWin->Write(buf);
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::DoCancel()
+ {
+ __ASSERT_DEBUG(iWin, User::Invariant());
+ iWin->ReadCancel();
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::Hide()
+ {
+ if (iWin)
+ CancelKey();
+ //
+ delete iWin;
+ iWin = NULL;
+ //
+ if (iCountDown)
+ iCountDown->Cancel();
+ //
+ delete iCountDown;
+ iCountDown=NULL;
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::CreateWin()
+ {
+ _LIT(KAlarmAlertConsoleCaption, "Test Alarm Alert Server Console");
+ //
+ __ASSERT_DEBUG(!iWin, User::Invariant());
+ __ASSERT_DEBUG(!iCountDown, User::Invariant());
+ //
+ TRAPD(trapCheck, iWin = Console::NewL(KAlarmAlertConsoleCaption, TSize(KConsFullScreen, KConsFullScreen)));
+ if (trapCheck)
+ {
+ iWin=NULL;
+ return;
+ }
+
+ TRAP(trapCheck, iCountDown = CPeriodic::NewL(CActive::EPriorityIdle));
+ if (trapCheck)
+ {
+ iCountDown=NULL;
+ return;
+ }
+ //
+ const TTimeIntervalMicroSeconds32 interval(60000000);
+ iCountDown->Start(interval, interval, TCallBack(&CountDownCallBack, this));
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertConsole::DoDeferTime(TASAltAlertServerResponse aResponse)
+ {
+ if (++iTimeInterval > 60)
+ {
+ iTimeInterval = 5;
+ User::Beep(440, 12);
+ }
+ //
+ TTime now;
+ now.HomeTime();
+ now += TTimeIntervalMinutes(iTimeInterval);
+ //
+ iSession.Notify(aResponse, now);
+ }
+
+
+//*************************************************************************************
+TBool CConsoleAlarmAlertConsole::CountDownCallBack(TAny* aSelf)
+ {
+ CConsoleAlarmAlertConsole& self = *reinterpret_cast(aSelf);
+ self.DecCounter();
+ //
+ return EFalse;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertLEDFlasher.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertLEDFlasher.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,129 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "consolealarmalertledflasher.h"
+
+// System includes
+#include
+
+// User includes
+#include "asaltdefs.h"
+
+// Type definitions
+
+// Constants
+const TInt KFlasherPeriodicity = 500000;
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertLEDFlasher (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
+CConsoleAlarmAlertLEDFlasher::CConsoleAlarmAlertLEDFlasher()
+: CTimer(CActive::EPriorityIdle)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
+//*************************************************************************************
+CConsoleAlarmAlertLEDFlasher* CConsoleAlarmAlertLEDFlasher::NewL()
+ {
+ CConsoleAlarmAlertLEDFlasher* self = new(ELeave) CConsoleAlarmAlertLEDFlasher();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+/**
+ * Start the flasher, if not busy
+ */
+TInt CConsoleAlarmAlertLEDFlasher::Start()
+ {
+ Stop();
+ After(KFlasherPeriodicity);
+ return(SetRedLedOn(ETrue));
+ }
+
+
+//*************************************************************************************
+/**
+ * Stop the LED flashing
+ */
+void CConsoleAlarmAlertLEDFlasher::Stop()
+ {
+ Cancel();
+ SetRedLedOn(EFalse);
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+/**
+ * @see CActive
+ */
+void CConsoleAlarmAlertLEDFlasher::RunL()
+ {
+ if (iStatus!=KErrNone)
+ {
+ SetRedLedOn(EFalse);
+ return;
+ }
+ SetRedLedOn(!iLedOn);
+ After(KFlasherPeriodicity);
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+/**
+ * Turn the LED on or off
+ */
+TInt CConsoleAlarmAlertLEDFlasher::SetRedLedOn(TBool aOn)
+ {
+ const TInt KClearAllLeds = 0;
+ const TInt KLedMaskRed1 = 1;
+
+ iLedOn = aOn;
+ if (iLedOn)
+ {
+ return HAL::Set(HAL::ELEDmask, KLedMaskRed1);
+ }
+ else
+ {
+ return HAL::Set(HAL::ELEDmask, KClearAllLeds);
+ }
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertServer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertServer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,131 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "consolealarmalertserver.h"
+
+// System includes
+
+// User includes
+#include "asaltdefs.h"
+//
+#include "consolealarmalertsession.h"
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+
+// The Console Alarm Alert Server is migrated to a secure server in EKA2
+#include
+
+
+
+const TUint KRangeCount = 1;
+
+const TInt KOpCodeRanges[KRangeCount] =
+ {
+ 0 // All Op Codes from 0 to KMaxInt should pass. No restrictions
+ };
+
+
+const TUint8 KElementsIndex[KRangeCount] =
+ {
+ CPolicyServer::EAlwaysPass, //All OP Codes Allways passing no capability required
+ };
+
+
+const CPolicyServer::TPolicy KConsoleAlarmAlertServerPolicy =
+ {
+ CPolicyServer::EAlwaysPass, //specifies all connect attempts should pass
+ KRangeCount,
+ KOpCodeRanges,
+ KElementsIndex, // what each range is compared to
+ KNullHandle //Since we have no specific policy checking
+ };
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertServer (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
+CConsoleAlarmAlertServer::CConsoleAlarmAlertServer()
+ :CPolicyServer(CActive::EPriorityStandard, KConsoleAlarmAlertServerPolicy), iInstructionSet(NULL)
+ {
+ }
+
+
+
+//*************************************************************************************
+CConsoleAlarmAlertServer::~CConsoleAlarmAlertServer()
+ {
+ if (iAttachment)
+ delete iAttachment;
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertServer::ConstructL()
+ {
+ StartL(KAlarmAlertServerName);
+ }
+
+
+//*************************************************************************************
+CConsoleAlarmAlertServer* CConsoleAlarmAlertServer::NewLC()
+ {
+ CConsoleAlarmAlertServer* self = new(ELeave) CConsoleAlarmAlertServer();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+CSession2* CConsoleAlarmAlertServer::NewSessionL(const TVersion& aVersion,const RMessage2& /*aMessage*/) const
+ {
+ const TVersion KServerVersion(KASAltVersionMajor, KASAltVersionMinor, KASAltVersionBuild);
+ if (!User::QueryVersionSupported(KServerVersion, aVersion))
+ User::Leave(KErrNotSupported);
+ //
+ return CConsoleAlarmAlertSession::NewL((CConsoleAlarmAlertServer*)this);
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+TInt CConsoleAlarmAlertServer::RunError(TInt /*Error*/)
+ {
+ return KErrNone;
+ }
+
+void CConsoleAlarmAlertServer::SetAttachment(HBufC8* data)
+ {
+ if (iAttachment)
+ delete iAttachment;
+ iAttachment = data;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertServerMain.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertServerMain.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,117 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "consolealarmalertservermain.h"
+
+// System includes
+
+// User includes
+#include "asaltdefs.h"
+//
+#include "consolealarmalertserver.h"
+
+// Type definitions
+
+// Constants
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> ConsoleAlarmAlertServer (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
+EXPORT_C void ConsoleAlarmAlertServer::StartConsoleAlarmAlertServerL(TAny* instructionSet)
+ {
+ _LIT(KAlarmAlertServerThreadName, "ConsoleAlarmAlertServerThread");
+ //
+ const TInt KStackSize = 0x0002000; // 8KB
+ const TInt KInitHeapSize = 0x0001000; // 4KB
+ const TInt KHeapSize = 0x1000000; // 16MB
+ //
+ // Is the alarm alert server already running? If so, don't
+ // start a new one...
+ TFullName name;
+ TFindServer finder(KAlarmAlertServerName);
+ if (finder.Next(name) == KErrNone)
+ return;
+
+ RThread serverThread;
+ const TInt error = serverThread.Create(KAlarmAlertServerThreadName,
+ &StartServerThreadFunction,
+ KStackSize,
+ KInitHeapSize,
+ KHeapSize,
+ instructionSet
+ );
+ User::LeaveIfError(error);
+ //
+ serverThread.SetPriority(EPriorityMore);
+ serverThread.Resume();
+ //
+ User::After(2000000); // 2 seconds
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+TInt ConsoleAlarmAlertServer::StartServerThreadFunction(TAny* instructionSet)
+ {
+ __UHEAP_MARK;
+ //
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if (!cleanup)
+ User::Invariant();
+ //
+ TRAPD(err, StartServerL(instructionSet));
+ delete cleanup;
+ //
+ __UHEAP_MARKEND;
+ return err;
+ }
+
+
+//*************************************************************************************
+void ConsoleAlarmAlertServer::StartServerL(TAny* instructionSet)
+ {
+ CActiveScheduler* scheduler = new CActiveScheduler();
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install(scheduler);
+ //
+
+ CConsoleAlarmAlertServer * tmp = CConsoleAlarmAlertServer::NewLC();
+ tmp->AddResponseArray(instructionSet);
+ CActiveScheduler::Start();
+ //
+ CleanupStack::PopAndDestroy(2, scheduler);
+ }
+
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> ConsoleAlarmAlertServer (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertSession.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/Source/ConsoleAlarmAlertSession.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,330 @@
+// Copyright (c) 1999-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "consolealarmalertsession.h"
+
+// System includes
+
+#include "e32svr.h"
+// User includes
+#include "asaltdefs.h"
+//#include "..\..\Test\ConsoleANTestClient.h"
+//
+#include "consolealarmalertsession.h"
+#include "consolealarmalertconsole.h"
+#include "consolealarmalertledflasher.h"
+#include "consolealarmalertserver.h" //for inter-session communication
+
+// Type definitions
+
+// Constants
+const TInt KSlot0 = 0;
+const TInt KSlot1 = 1;
+const TInt KSlot2 = 2;
+
+// Enumerations
+
+// Classes referenced
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+// ----> CConsoleAlarmAlertSession (source)
+///////////////////////////////////////////////////////////////////////////////////////
+
+//*************************************************************************************
+CConsoleAlarmAlertSession::CConsoleAlarmAlertSession(CConsoleAlarmAlertServer* aServer)
+: iServer(aServer), iInstructionSet(NULL), iInstructionSetFound(EFalse)
+ {
+ }
+
+
+//*************************************************************************************
+CConsoleAlarmAlertSession::~CConsoleAlarmAlertSession()
+ {
+ CConsoleAlarmAlertSession* session = iServer->WaitingSession();
+ session = NULL;
+ delete iSoundLEDFlasher;
+ delete iSoundCallbackTimer;
+ delete iConsole;
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::ConstructL()
+ {
+ iSoundLEDFlasher = CConsoleAlarmAlertLEDFlasher::NewL();
+ iSoundCallbackTimer = CPeriodic::NewL(CActive::EPriorityIdle);
+ iConsole = new(ELeave) CConsoleAlarmAlertConsole(*this);
+ }
+
+
+//*************************************************************************************
+CConsoleAlarmAlertSession* CConsoleAlarmAlertSession::NewL(CConsoleAlarmAlertServer* aServer)
+ {
+ CConsoleAlarmAlertSession* self = new(ELeave) CConsoleAlarmAlertSession(aServer);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+TTime CConsoleAlarmAlertSession::DeferTime() const
+ {
+ return iDeferTime;
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::Notify(TASAltAlertServerResponse aFlag)
+ {
+ if (iHasMessage)
+ {
+ iMsgPtr.Complete(aFlag);
+ iHasMessage = EFalse;
+ }
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::Notify(TASAltAlertServerResponse aFlag, const TTime& aDeferTime)
+ {
+ if (iHasMessage)
+ {
+ TPckgC time(aDeferTime);
+ TRAPD(err, iMsgPtr.WriteL(KSlot0, time));
+ __ASSERT_DEBUG(err == KErrNone, User::Invariant());
+ Notify(aFlag);
+ }
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::ServiceL(const RMessage2& aMessage)
+ {
+ iMsgComplete = ETrue;
+ const TInt function = aMessage.Function();
+
+ //see if the server holds a set of instructions to be followed,
+ //rather than waiting for user input.
+ if(!iInstructionSetFound) //go look for it now.
+ {
+ //we will enter into this code only once
+ const CServer2* tmpServ = Server();
+ const CConsoleAlarmAlertServer* specific = reinterpret_cast(tmpServ);
+ iInstructionSet = const_cast(specific)->ResponseArray();
+ iInstructionSetFound = ETrue;
+ }
+
+ //
+ switch(function)
+ {
+ case EASAltOpCodeNotify:
+ {
+ __ASSERT_ALWAYS(!iHasMessage, User::Invariant());
+ iMsgComplete = EFalse;
+ iMsgPtr = aMessage;
+ iHasMessage = ETrue;
+ CConsoleAlarmAlertSession* session = iServer->WaitingSession();
+ session = this;
+ break;
+ }
+
+ case EASAltOpCodeNotifyCancel:
+ if (iHasMessage)
+ {
+ iHasMessage=EFalse;
+ iMsgPtr.Complete(KErrCancel);
+ }
+ break;
+
+ case EASAltOpCodeVisible:
+ {
+ TBool isVisible = aMessage.Int0();
+ iConsole->SetVisibility(isVisible);
+ iServer->SetNotifying(isVisible);
+ break;
+ }
+
+ case EASAltOpCodeSetState:
+ iConsole->SetAlertState(aMessage.Int0());
+ break;
+
+ case EASAltOpCodeSetAlarm:
+ SetAlarmL(aMessage);
+ iConsole->iTimeInterval=0;
+ iConsole->UpdateDisplay();
+ break;
+
+ case EASAltOpCodeGetUserTime:
+ GetUserTimeL(aMessage);
+ break;
+
+ case EASAltOpCodeSetDeferTime:
+ SetDeferTimeL(aMessage);
+ iConsole->UpdateDisplay();
+ break;
+
+ case EASAltOpCodeLogon:
+ __ASSERT_ALWAYS(!iLoggedOn, User::Invariant());
+ iMsgComplete=EFalse;
+ iLoggedOn=ETrue;
+ break;
+
+ case EASAltOpCodeStartPlayingSound:
+ {
+ iSoundLEDFlasher->Start();
+ TCallBack callback(SoundPlaybackCallbackL, this);
+ iSoundCallbackTimer->Start(TTimeIntervalMicroSeconds32(0), TTimeIntervalMicroSeconds32(3000000), callback);
+ break;
+ }
+
+ case EASAltOpCodeStopPlayingSound:
+ iSoundLEDFlasher->Stop();
+ iSoundCallbackTimer->Cancel();
+ break;
+
+#if 0
+//Test code
+ case EASAltTestOpCodeAcknowledgeAlarm:
+ if (iServer->WaitingSession())
+ iServer->WaitingSession()->Notify(EASAltAlertServerResponseClear);
+ break;
+
+ case EASAltTestOpCodeGetAttachment:
+ {
+ if (iServer->Attachment() != NULL)
+ {
+ const TDes8& data = iServer->Attachment()->Des();
+ const TInt maxLength = static_cast(aMessage.Int0());
+ if (data.Size() > maxLength)
+ User::Panic(_L("Client's buffer is too short"), KErrOverflow);
+ else
+ {
+ if (data.Length() == 0)
+ {
+ _LIT8(KEmpty,"Empty");
+ aMessage.WriteL(KSlot1, KEmpty);
+ }
+ else
+ {
+ aMessage.WriteL(KSlot1, data);
+ }
+ iServer->SetAttachment(NULL);
+ }
+ }
+ }
+ break;
+
+ case EASAltTestOpCodeGetIsNotifying:
+ {
+ TPckgC ret = iServer->IsNotifying();
+ aMessage.WriteL(KSlot0, ret);
+ break;
+ }
+#endif
+ default:
+ User::Invariant();
+ break;
+ }
+
+ if (iMsgComplete)
+ aMessage.Complete(KErrNone);
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+TBool CConsoleAlarmAlertSession::CmdL()
+ {
+ return KErrNone;
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::SetAlarmL(const RMessage2& aMessage)
+ {
+ TPckg pA(iAlarm);
+ aMessage.ReadL(KSlot0, pA);
+ if (iAlarm.HasAssociatedData())
+ {
+ iAlarmAssociatedDataSize = aMessage.GetDesLength(2);
+ TPckg pB(iAlarmData);
+ aMessage.ReadL(KSlot2, pB);
+
+ //Storing the data in the server for the test session to read..
+ HBufC8* data = HBufC8::NewLC(iAlarmAssociatedDataSize);
+ TPtr8 pData(data->Des());
+ aMessage.ReadL(KSlot2, pData);
+ iServer->SetAttachment(data); //Server takes an ownership
+ CleanupStack::Pop(data);
+ }
+ else
+ iAlarmAssociatedDataSize = 0;
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::GetUserTimeL(const RMessage2& aMessage)
+ {
+ TTime time;
+ time.HomeTime();
+ time+=TTimeIntervalMinutes(iConsole->GetTimeInterval());
+ TPtrC8 pTime((TUint8 *)&time,sizeof(TTime));
+ aMessage.WriteL(KSlot0,pTime);
+ }
+
+
+//*************************************************************************************
+void CConsoleAlarmAlertSession::SetDeferTimeL(const RMessage2& aMessage)
+ {
+ TPckg pTime(iDeferTime);
+ aMessage.ReadL(KSlot0, pTime);
+ }
+
+
+//*************************************************************************************
+TBool CConsoleAlarmAlertSession::SoundPlaybackCallbackL(TAny* /*aSelf*/)
+ {
+// _LIT(KPlayingSound, "Playing sound");
+// User::InfoPrint(KPlayingSound);
+ return ETrue;
+ }
+
+//**************************************************************************************
+TAny * CConsoleAlarmAlertSession::InstructionSet()
+ {
+ return iInstructionSet;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/ConsoleAlarmAlertServer/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,19 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For ConsoleAlarmAlertServer
+//
+//
+
+PRJ_TESTMMPFILES
+ConsoleAlarmAlertServer.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Group/Smoketest_Timew.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Group/Smoketest_Timew.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,63 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+//
+
+
+TARGET Smoketest_Timew_Server.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7775
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY WriteUserData ReadUserData
+
+SOURCEPATH ..\Src
+
+SOURCE TestTimewServer.cpp
+SOURCE TestTimewSetAlarm.cpp
+SOURCE TestTimewBase.cpp
+SOURCE SM_ALM.CPP
+SOURCE SM_UTL.CPP
+SOURCE SM_MOD.CPP
+SOURCE SM_RSP.CPP
+
+USERINCLUDE ..\Inc ..\..\Group
+USERINCLUDE ..\ConsoleAlarmAlertServer\Include
+
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\Test
+SYSTEMINCLUDE \Epoc32\include\ecom
+
+library BAFL.LIB
+library FBSCLI.LIB
+library WS32.LIB
+library CONE.LIB
+library DIAL.LIB
+library FEPBASE.LIB
+LIBRARY apparc.lib
+LIBRARY etext.lib
+LIBRARY estor.lib
+LIBRARY efsrv.lib
+
+library AlarmClient.lib
+library AlarmShared.lib
+library EUSER.LIB
+LIBRARY ecom.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,25 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For Timew smoketest
+//
+//
+
+PRJ_TESTEXPORTS
+
+../Scripts/setup_Smoketest_Timew.script z:/smoketest/setup_smoketest_timew.script
+../Scripts/Smoketest_Timew.script z:/smoketest/smoketest_timew.script
+../TestData/Smoketest_Timew.ini z:/smoketest/smoketest_timew.ini
+
+PRJ_TESTMMPFILES
+Smoketest_Timew.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/ALMMOD.H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/ALMMOD.H Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,121 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __ALMMOD_H__
+#define __ALMMOD_H__
+
+// System includes
+#include
+
+// User includes
+#include "timewmod.h"
+
+// Constants
+const TInt KArrayOfAlarmIdsGranularity = 64;
+const TInt KPriorityAlarmIdleObserver=-0x0010;
+const TInt KPriorityAlarmResponder=-0x0005; // Idle observer priority must be lower than this
+
+// The alarm model gives a general notification only
+//
+class CAlmIdleObserver : public CIdleObserver
+ {
+public:
+ static CAlmIdleObserver* NewL(MTimewModelObserver* aObserver,TInt aIdlePriority);
+ };
+
+class CAlmModel : public CModelBase
+ {
+public:
+ ~CAlmModel();
+ static CAlmModel* NewL(MTimewModelObserver* aObserver,TInt aResponderPriority);
+ virtual void ProcessResponder(TInt aStatus);
+public:
+ TInt AlarmQuietPeriodMinutes() const;
+ TInt AlarmQuietPeriodSet(TInt aMinutes);
+ inline void AlarmQuietPeriodCancel();
+ TTime AlarmQuietPeriodEnd() const;
+ //
+ void AlarmSoundToggle();
+ TInt AlarmSoundStateSet(TBool aSoundOn);
+ TTimeWAlarmSoundState AlarmSoundState() const;
+ //
+ TInt ClockAlarmDelete(TInt aAlarmIndex);
+ TInt ClockAlarmEnable(TInt aAlarmIndex,TTimeWClockAlarmState aClockAlarmState);
+ TTimeWClockAlarmState ClockAlarmState(TInt aAlarmIndex) const;
+ TInt ClockAlarmSet(TInt aAlarmIndex,const TASShdAlarm& aInfo);
+ TInt ClockAlarmInfo(TInt aAlarmIndex,TASShdAlarm& aInfo);
+ //
+ void NextAlarmResetListL();
+ void NextAlarmClearList();
+ TInt NextAlarmNumber() const;
+ TInt NextAlarmDelete(TInt aIndex);
+ TBool NextAlarmCanDelete(TInt aIndex) const;
+ TInt NextAlarm(TFullName& aOwner, TASShdAlarm& aInfo) const;
+ TInt NextAlarmInfo(TInt aIndex, TFullName& aOwner, TASShdAlarm& aInfo) const;
+ //
+ TInt OrphanAlarmNumber() const;
+ inline TInt UnacknowledgedAlarmNumber() const;
+ //
+ void ReviewAlarmResetListL();
+ void ReviewAlarmClearList();
+ TInt ReviewAlarmNumber() const;
+ TInt ReviewAlarmInfo(TInt aIndex, TASShdAlarm& aInfo) const;
+
+private:
+ CAlmModel();
+ void ConstructL(MTimewModelObserver* aObserver,TInt aResponderPriority);
+
+private:
+
+ /**
+ * The list of clock alarms. Note that although there is always 8
+ * alarms in this list, not all will be active.
+ */
+ RPointerArray iClockAlarms;
+
+ /**
+ *
+ */
+ RASCliSession iAlmSvr;
+
+ /**
+ *
+ */
+ TRequestStatus iStatus;
+
+ /**
+ *
+ */
+ RArray iNextAlarmIds;
+
+ /**
+ *
+ */
+ RArray iReviewAlarmIds;
+ };
+
+
+TInt CAlmModel::UnacknowledgedAlarmNumber() const
+ {
+ TInt count = iAlmSvr.AlarmCountByState(EAlarmStateWaitingToNotify);
+ return (count + iAlmSvr.AlarmCountByState(EAlarmStateNotifying));
+ }
+
+void CAlmModel::AlarmQuietPeriodCancel()
+ {
+ iAlmSvr.CancelAlarmSilence();
+ }
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/ALMMOD.INL
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/ALMMOD.INL Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,79 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+// class CAlmModel
+inline TAlarmSoundState CAlmModel::AlarmSoundState() const
+ {
+ return(iAlmSvr.AlarmSoundState());
+ }
+inline void CAlmModel::AlarmSoundStateSet(TBool aSoundOn)
+ {
+ iAlmSvr.SetAlarmSoundOn(aSoundOn);
+ }
+inline void CAlmModel::AlarmSoundToggle()
+ {
+ iAlmSvr.SetAlarmSoundOn(iAlmSvr.AlarmSoundState()==EAlarmSoundOff);
+ }
+inline TTime CAlmModel::AlarmQuietPeriodEnd() const
+ {
+ return(iAlmSvr.QuietPeriodUntil());
+ }
+inline void CAlmModel::AlarmQuietPeriodCancel()
+ {
+ iAlmSvr.QuietPeriodCancel();
+ }
+inline TInt CAlmModel::ClockAlarmDelete(TInt aClockAlarmNum)
+ {
+ __ASSERT_DEBUG(aClockAlarmNumReset();
+ }
+inline TInt CAlmModel::NextAlarmNumber() const
+ {
+ return(iAlmSvr.AlarmCount(RAlarmServer::ECountNext));
+ }
+inline void CAlmModel::ReviewAlarmResetListL()
+ {
+ iAlmSvr.AlarmArrayPopulateL(*iReviewAlarms,RAlarmServer::EArrayReview);
+ }
+inline void CAlmModel::ReviewAlarmClearList()
+ {
+ iReviewAlarms->Reset();
+ }
+inline TInt CAlmModel::ReviewAlarmNumber() const
+ {
+ return(iAlmSvr.AlarmCount(RAlarmServer::ECountReview));
+ }
+inline TInt CAlmModel::OrphanAlarmNumber() const
+ {
+ return(iAlmSvr.AlarmCount(RAlarmServer::ECountOrphan));
+ }
+inline TInt CAlmModel::UnacknowledgedAlarmNumber() const
+ {
+ return(iAlmSvr.AlarmCount(RAlarmServer::ECountUnacknowledged));
+ }
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/SM_STD.H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/SM_STD.H Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,68 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __SM_STD_H__
+#define __SM_STD_H__
+
+// System includes
+#include
+#include
+#include
+#include
+
+// User includes
+#include "timewmod.h"
+
+class CModelResponder : public CActive
+ {
+public:
+ void Start();
+ virtual void RunL();
+ virtual void DoStart()=0;
+ virtual void DoCancel()=0;
+protected:
+ CModelResponder(CModelBase &aModel,TInt aPriority);
+private:
+ void NotifyModel(TInt aNotification);
+private:
+ CModelBase *iModel;
+ };
+
+class CAlmModel;
+class CAlmResponder : public CModelResponder
+ {
+public:
+ CAlmResponder(RASCliSession& aSvr,CAlmModel& aModel,TInt aResponderPriority);
+public:
+ virtual void DoStart();
+ virtual void DoCancel();
+private:
+ TAlarmId iAlarmId;
+ RASCliSession* iAlmSvr;
+ };
+
+class CWldModel;
+class CWldResponder : public CModelResponder
+ {
+public:
+ CWldResponder(RWorldServer& aSvr,CWldModel& aModel,TInt aResponderPriority);
+public:
+ virtual void DoStart();
+ virtual void DoCancel();
+protected:
+ RWorldServer* iWldSvr;
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/TIMEWMOD.H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/TIMEWMOD.H Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,145 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TIMEWMOD_H__
+#define __TIMEWMOD_H__
+
+// System includes
+#include
+
+// Constants
+const TInt KMaxClockAlarms = 8;
+
+/**
+ * From the old T32Alm.h file. Encapsulates the idea of
+ * a "Not set" alarm, which the new AlarmServer doesn't
+ * support.
+ */
+enum TTimeWClockAlarmState
+ {
+ ETimeWClockAlarmStateNotSet = 0,
+ ETimeWClockAlarmStateSet,
+ ETimeWClockAlarmStateDisabled
+ };
+
+/**
+ *
+ */
+enum TTimeWAlarmSoundState
+ {
+ ETimeWAlarmSoundOn = 0,
+ ETimeWAlarmSoundOff,
+ ETimeWAlarmQuietPeriod
+ };
+
+/**
+ *
+ */
+enum TInternalClockAlarmFlags
+ {
+ EClockAlarmFlagsIsSet = 1
+ };
+
+enum TModelPanic
+ {
+ EModelWorld = 0,
+ EModelObserver,
+ EModelOutOfRange,
+ EModel
+ };
+enum TModelFault
+ {
+ EModelfIdleObj = 0,
+ EModelfPriorityInvalid,
+ EModelfIdleArgument,
+ EModelfNoNotifier,
+ EModelfOutOfRange,
+ EModelfTime,
+ EModelfTryingToChangeStateOfNullClockAlarm,
+ EModelfTryingToGetInfoAboutNullClockAlarm,
+ EModelfTryingToOrphanClockAlarm
+ };
+
+GLREF_C void Panic(TModelPanic aPanic);
+GLREF_C void Fault(TModelFault aFault);
+
+class MTimewModelObserver
+ {
+public:
+ virtual void HandleUpdate(TInt aNotification)=0;
+ };
+
+class CIntermediateObserver : public CBase, public MTimewModelObserver
+ {
+public:
+ CIntermediateObserver();
+ virtual void HandleUpdate(TInt aNotification);
+ void SetTimewModelObserver(MTimewModelObserver* aObserver);
+protected:
+ void Notify(TInt aNotification);
+private:
+ MTimewModelObserver* iObserver;
+ };
+
+class CIdleObserver : public CIntermediateObserver
+ {
+public:
+ CIdleObserver();
+ ~CIdleObserver();
+ void ConstructL(MTimewModelObserver* aObserver,TInt aPriority);
+public:
+ void CancelIdleRefresh();
+ virtual void HandleUpdate(TInt aNotification);
+protected:
+ virtual void DoIdleCancel();
+ virtual void DoIdleNotify();
+private:
+ void StartIdleRefresh();
+ static TInt IdleCallBack(TAny* aPtr);
+private:
+ TInt iNotification;
+ CIdle* iIdle;
+ };
+
+class CModelResponder;
+class CModelBase : public CBase
+ {
+protected:
+ CModelBase();
+
+public:
+ ~CModelBase();
+
+public:
+ void Stop();
+ void Start();
+ void SetTimewModelObserver(MTimewModelObserver* aObserver);
+
+protected:
+ void Notify(TInt aNotification);
+ virtual void ProcessResponder(TInt aStatus)=0;
+ void SetResponderActive(CModelResponder* aResponder);
+
+private:
+ void DoObserverNotify(TInt aNotification);
+
+private:
+ TBool iDoingViewNotify;
+ MTimewModelObserver* iObserver;
+ CModelResponder* iResponder;
+ friend class CModelResponder;
+ };
+
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/TestTimewBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/TestTimewBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,39 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimewBase which is the base class for all
+// the Psd Agx suite test steps
+//
+//
+
+#ifndef TEST_TIMEW_BASE_H
+#define TEST_TIMEW_BASE_H
+
+#include "almmod.h"
+#include
+
+
+class CTestTimewBase : public CTestStep
+{
+public:
+ CTestTimewBase();
+ ~CTestTimewBase();
+ virtual enum TVerdict doTestStepPreambleL();
+ virtual enum TVerdict doTestStepPostambleL(); CAlmModel* Model();
+
+private:
+ CActiveScheduler* iSchedular;
+
+protected: CAlmModel* iModel;};
+
+#endif /* TEST_TIMEW_BASE_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/TestTimewServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/TestTimewServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimewServer
+//
+//
+
+#ifndef TEST_TIMEW_SERVER_H
+#define TEST_TIMEW_SERVER_H
+
+#include
+
+class CTestTimewServer : public CTestServer
+{
+public:
+ static CTestTimewServer* NewL();
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+
+private:
+ void ConstructL();
+};
+
+#endif /* TEST_TIMEW_SERVER_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Inc/TestTimewSetAlarm.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Inc/TestTimewSetAlarm.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,38 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimewSetAlarm
+//
+//
+
+#ifndef TEST_TIMEW_SET_ALARM_H
+#define TEST_TIMEW_SET_ALARM_H
+
+#include "TestTimewBase.h"
+#include
+
+class CTestTimewSetAlarm : public CTestTimewBase
+{
+public:
+ CTestTimewSetAlarm();
+ virtual ~CTestTimewSetAlarm();
+
+public:
+ virtual enum TVerdict doTestStepL( void );
+
+private:
+ void SetAlarmL( void );
+ TASShdAlarm iAlarmData;
+};
+
+#endif /* TEST_TIMEW_SET_ALARM_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/ReadMe.doc
Binary file common/tools/ats/smoketest/Timew/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Scripts/Smoketest_Timew.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Scripts/Smoketest_Timew.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,23 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run Timew smoketest
+//
+LOAD_SUITE Smoketest_Timew_Server
+//
+START_TESTCASE 8979
+RUN_TEST_STEP 1000 Smoketest_Timew_Server SetAlarm c:\Smoketest\Smoketest_Timew.ini 24560_SetAlarm
+END_TESTCASE 8979
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Scripts/setup_Smoketest_Timew.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Scripts/setup_Smoketest_Timew.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,22 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+RUN_UTILS MkDir c:\Smoketest\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_timew.ini c:\smoketest\smoketest_timew.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_timew.ini
+
+// RUN_SCRIPT Smoketest_Timew.script
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/SM_ALM.CPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/SM_ALM.CPP Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,489 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "almmod.h"
+#include "sm_std.h"
+#include
+
+//
+// class CAlmModel
+//
+
+CAlmModel::CAlmModel()
+//
+// Constructor
+//
+ {
+ }
+
+CAlmModel::~CAlmModel()
+//
+// Destructor
+//
+ {
+ Stop();
+ iClockAlarms.ResetAndDestroy();
+ iClockAlarms.Close();
+ iReviewAlarmIds.Close();
+ iNextAlarmIds.Close();
+ iAlmSvr.Close();
+ REComSession::FinalClose();
+ }
+
+void CAlmModel::ConstructL(MTimewModelObserver* aObserver,TInt aResponderPriority)
+//
+// Construct the alarm engine components
+//
+ {
+ SetTimewModelObserver(aObserver);
+ //
+ iReviewAlarmIds = RArray(KArrayOfAlarmIdsGranularity);
+ iNextAlarmIds = RArray(KArrayOfAlarmIdsGranularity);
+ //
+ const TInt r = iAlmSvr.Connect();
+ User::LeaveIfError(r);
+ //
+ TInt i;
+ iClockAlarms = RPointerArray(KMaxClockAlarms);
+ for(i=0; i clockIds(KMaxClockAlarms);
+ CleanupClosePushL(clockIds);
+ iAlmSvr.GetAlarmIdListForCategoryL(KASCliCategoryClock, clockIds);
+
+ // Put them in the slots - we can only display KMaxClockAlarms alarms
+ // so any beyond that are ignored.
+ TInt slotsUsedSoFar = 0;
+ const TInt count = Min(KMaxClockAlarms, clockIds.Count());
+ for(i=0; iState() != EAlarmStateNotified)
+ {
+ // If we don't do this, then the alarm slot is treated
+ // as available.
+ ++slotsUsedSoFar;
+ alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
+ }
+ }
+ CleanupStack::PopAndDestroy(&clockIds);
+ //
+ CAlmResponder* pR=new(ELeave) CAlmResponder(iAlmSvr,*this,aResponderPriority);
+ SetResponderActive(pR);
+ }
+
+CAlmModel* CAlmModel::NewL(MTimewModelObserver* aObserver,TInt aResponderPriority)
+//
+// Create a new alarm engine
+//
+ {
+ CAlmModel* model=new(ELeave) CAlmModel;
+ CleanupStack::PushL(model);
+ model->ConstructL(aObserver,aResponderPriority);
+ CleanupStack::Pop(model);
+ return(model);
+ }
+
+void CAlmModel::ProcessResponder(TInt aStatus)
+//
+// Interpret responder status
+//
+ {
+ // FIX
+ if (aStatus!=KErrCancel && aStatus!=KErrNone)
+ Notify(aStatus);
+ else
+ Notify(0);
+ }
+
+TInt CAlmModel::AlarmQuietPeriodMinutes() const
+//
+// Return the time that sound is delayed until
+//
+ {
+ TTime timeNow;
+ timeNow.HomeTime();
+ TTime timeQuiet=AlarmQuietPeriodEnd();
+ TInt quietMinutes;
+ if (timeQuiet<=timeNow || timeQuiet==Time::NullTTime())
+ quietMinutes=0;
+ else
+ {
+ TTimeIntervalMinutes minutes;
+ timeQuiet.MinutesFrom(timeNow,minutes);
+ quietMinutes=minutes.Int()+1;
+ }
+ return(quietMinutes);
+ }
+
+TInt CAlmModel::AlarmQuietPeriodSet(TInt aMinutes)
+//
+// Delay alarm sounds for a given number of minutes
+//
+ {
+ TInt ret = KErrNone;
+ //
+ if (!aMinutes)
+ ret = iAlmSvr.CancelAlarmSilence();
+ else
+ ret = iAlmSvr.SetAlarmSoundsSilentFor(TTimeIntervalMinutes(aMinutes));
+ //
+ return ret;
+ }
+
+TInt CAlmModel::ClockAlarmEnable(TInt aAlarmIndex, TTimeWClockAlarmState aClockAlarmState)
+//
+// Enable or disable a clock alarm
+//
+ {
+ __ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
+ //
+ TAlarmStatus newStatus;
+ switch(aClockAlarmState)
+ {
+ case ETimeWClockAlarmStateNotSet:
+ return ClockAlarmDelete(aAlarmIndex);
+
+ case ETimeWClockAlarmStateSet:
+ newStatus = EAlarmStatusEnabled;
+ break;
+
+ default:
+ case ETimeWClockAlarmStateDisabled:
+ newStatus = EAlarmStatusDisabled;
+ break;
+ }
+
+ TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
+ __ASSERT_ALWAYS(alarm->Id() != KNullAlarmId, Fault(EModelfTryingToChangeStateOfNullClockAlarm));
+ TInt error = iAlmSvr.SetAlarmStatus(alarm->Id(), newStatus);
+ if (error != KErrNone)
+ return error;
+
+ // Refetch alarm from server (will update status)
+ error = iAlmSvr.GetAlarmDetails(alarm->Id(), *alarm);
+ if (error == KErrNone)
+ alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
+ return error;
+ }
+
+TInt CAlmModel::ClockAlarmSet(TInt aAlarmIndex, const TASShdAlarm& aInfo)
+//
+// Set a clock alarm
+//
+ {
+ __ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
+ //
+ TInt error = KErrNone;
+ TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
+ if (alarm->Id() != KNullAlarmId)
+ {
+ // There is already an alarm set in this slot. Delete
+ // the old, replace it with the new.
+ error = iAlmSvr.AlarmDelete(alarm->Id());
+ if (error != KErrNone)
+ return error;
+ alarm->ClientFlags().Clear(EClockAlarmFlagsIsSet);
+ }
+
+ // Add alarm (will also update cached alarm details)
+ *alarm = aInfo;
+ alarm->Category() = KASCliCategoryClock;
+ error = iAlmSvr.AlarmAdd(*alarm);
+ if (error == KErrNone)
+ alarm->ClientFlags().Set(EClockAlarmFlagsIsSet);
+ return error;
+ }
+
+TInt CAlmModel::ClockAlarmInfo(TInt aAlarmIndex,TASShdAlarm& aInfo)
+//
+// Get information about a clock alarm
+//
+ {
+ __ASSERT_DEBUG(aAlarmIndex < KMaxClockAlarms, Panic(EModelOutOfRange));
+ //
+ TInt error = KErrNone;
+ aInfo = *(iClockAlarms[aAlarmIndex]);
+ if (aInfo.Id() != KNullAlarmId && aInfo.ClientFlags().IsSet(EClockAlarmFlagsIsSet))
+ {
+ // Preserve flags
+ const TBitFlags16 flags = aInfo.ClientFlags();
+
+ // Fetch alarm details
+ error = iAlmSvr.GetAlarmDetails(aInfo.Id(), aInfo);
+
+ // Restore flags
+ if (error == KErrNone)
+ {
+ // Has the alarm already notified?
+ if (aInfo.State() != EAlarmStateQueued && aInfo.State() != EAlarmStateNotifying)
+ {
+ // Treat this slot as free
+ TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
+ alarm->Reset();
+ aInfo = *alarm;
+ }
+ else
+ aInfo.ClientFlags() = flags;
+ }
+ else if (error == KErrNotFound)
+ {
+ // Alarm has been deleted
+ TASShdAlarm* alarm = iClockAlarms[aAlarmIndex];
+ alarm->Reset();
+ aInfo = *alarm;
+ }
+ }
+ return error;
+ }
+
+TInt CAlmModel::ClockAlarmDelete(TInt aClockAlarmNum)
+ {
+ __ASSERT_DEBUG(aClockAlarmNum < KMaxClockAlarms, Panic(EModelOutOfRange));
+ TASShdAlarm* alarm = iClockAlarms[aClockAlarmNum];
+ __ASSERT_ALWAYS(alarm->Id() != KNullAlarmId, Fault(EModelfTryingToChangeStateOfNullClockAlarm));
+ const TInt error = iAlmSvr.AlarmDelete(alarm->Id());
+ if (error == KErrNone || error == KErrNotFound)
+ {
+ // Update cached representation of deleted alarm
+ alarm->Reset();
+ }
+ return error;
+ }
+
+TTimeWClockAlarmState CAlmModel::ClockAlarmState(TInt aClockAlarmNum) const
+ {
+ __ASSERT_DEBUG(aClockAlarmNum < KMaxClockAlarms, Panic(EModelOutOfRange));
+ //
+ const TASShdAlarm* alarm = iClockAlarms[aClockAlarmNum];
+ if (alarm->ClientFlags().IsSet(EClockAlarmFlagsIsSet))
+ {
+ switch(alarm->Status())
+ {
+ case EAlarmStatusEnabled:
+ return ETimeWClockAlarmStateSet;
+ case EAlarmStatusDisabled:
+ return ETimeWClockAlarmStateDisabled;
+ }
+ }
+ return ETimeWClockAlarmStateNotSet;
+ }
+
+void CAlmModel::NextAlarmResetListL()
+//
+// Fetch a list of ids of all the alarms that are pending
+// within the alarm server.
+//
+ {
+ iAlmSvr.GetAlarmIdListByStateL(EAlarmStateQueued, iNextAlarmIds);
+ }
+
+void CAlmModel::NextAlarmClearList()
+ {
+ iNextAlarmIds.Reset();
+ }
+
+TInt CAlmModel::NextAlarmNumber() const
+ {
+ return iAlmSvr.NumberOfAlarmsActiveInQueue();
+ }
+
+TInt CAlmModel::NextAlarmDelete(TInt aIndex)
+//
+// Delete one of the next alarms
+//
+ {
+ TInt ret = KErrNotFound;
+ if (aIndex < iNextAlarmIds.Count())
+ {
+ const TAlarmId id = iNextAlarmIds[aIndex];
+ ret = iAlmSvr.AlarmDelete(id);
+ }
+ return ret;
+ }
+
+TBool CAlmModel::NextAlarmCanDelete(TInt aIndex) const
+//
+// Determine whether can delete the specified alarm.
+//
+ {
+ __ASSERT_DEBUG(aIndex < iNextAlarmIds.Count(), Panic(EModelOutOfRange));
+ //
+ const TAlarmId id = iNextAlarmIds[aIndex];
+ //
+ TASShdAlarm alarm;
+ if (iAlmSvr.GetAlarmDetails(id, alarm) == KErrNone)
+ {
+ return (
+ alarm.Category() == KASCliCategoryClock ||
+ alarm.State() == EAlarmStateSnoozed ||
+ !alarm.HasOwningSession()
+ );
+ }
+ return EFalse;
+ }
+
+TInt CAlmModel::NextAlarm(TFullName& aOwner, TASShdAlarm& aInfo) const
+//
+// Get information about the next alarm
+//
+ {
+ aOwner = KNullDesC;
+ //
+ TAlarmId id = KNullAlarmId;
+ TInt ret = iAlmSvr.GetNextDueAlarmId(id);
+ if (ret == KErrNone)
+ {
+ if (id == KNullAlarmId)
+ {
+ aInfo.Reset();
+ ret = KErrNotFound;
+ }
+ else
+ {
+ ret = iAlmSvr.GetAlarmDetails(id, aInfo);
+ if (ret == KErrNone)
+ ret = iAlmSvr.GetAlarmOwner(id, aOwner);
+ }
+ }
+ return ret;
+ }
+
+TInt CAlmModel::NextAlarmInfo(TInt aIndex, TFullName& aOwner, TASShdAlarm& aInfo) const
+//
+// Get info about the next alarm
+//
+ {
+ TInt ret = KErrNotFound;
+ if (aIndex < iNextAlarmIds.Count())
+ {
+ const TAlarmId id = iNextAlarmIds[aIndex];
+ ret = iAlmSvr.GetAlarmDetails(id, aInfo);
+ if (ret == KErrNone)
+ {
+ ret = iAlmSvr.GetAlarmOwner(id, aOwner);
+ }
+ }
+ return ret;
+ }
+
+void CAlmModel::ReviewAlarmResetListL()
+ {
+ iAlmSvr.GetAlarmIdListByStateL(EAlarmStateNotified, iReviewAlarmIds);
+ }
+
+void CAlmModel::ReviewAlarmClearList()
+ {
+ iReviewAlarmIds.Reset();
+ }
+
+TInt CAlmModel::ReviewAlarmNumber() const
+ {
+ return iAlmSvr.AlarmCountByState(EAlarmStateNotified);
+ }
+
+TInt CAlmModel::ReviewAlarmInfo(TInt aIndex, TASShdAlarm& aInfo) const
+//
+// Get information about a past alarm
+//
+ {
+ TInt ret = KErrNotFound;
+ if (aIndex < iReviewAlarmIds.Count())
+ {
+ const TAlarmId id = iReviewAlarmIds[aIndex];
+ ret = iAlmSvr.GetAlarmDetails(id, aInfo);
+ }
+ return ret;
+ }
+
+void CAlmModel::AlarmSoundToggle()
+ {
+ TTimeWAlarmSoundState soundState = AlarmSoundState();
+ if (soundState == ETimeWAlarmSoundOn)
+ AlarmSoundStateSet(EFalse);
+ else
+ AlarmSoundStateSet(ETrue);
+ }
+
+TInt CAlmModel::AlarmSoundStateSet(TBool aSoundOn)
+ {
+ TAlarmGlobalSoundState state = EAlarmGlobalSoundStateOn;
+ if (!aSoundOn)
+ state = EAlarmGlobalSoundStateOff;
+
+ return iAlmSvr.SetAlarmSoundState(state);
+ }
+
+TTimeWAlarmSoundState CAlmModel::AlarmSoundState() const
+ {
+ // First check whether we're in a silent period
+ if (iAlmSvr.AlarmSoundsTemporarilySilenced())
+ return ETimeWAlarmQuietPeriod;
+
+ // We're not, so check global sound state and map
+ // to TimeW settings
+ TAlarmGlobalSoundState state = EAlarmGlobalSoundStateOff;
+ if (iAlmSvr.GetAlarmSoundState(state) == KErrNone)
+ {
+ if (state == EAlarmGlobalSoundStateOn)
+ return ETimeWAlarmSoundOn;
+ }
+ return ETimeWAlarmSoundOff;
+ }
+
+TTime CAlmModel::AlarmQuietPeriodEnd() const
+ {
+ TTime endTime;
+ if (iAlmSvr.GetAlarmSoundsSilentUntil(endTime) == KErrNone)
+ return endTime;
+ //
+ endTime.HomeTime();
+ return endTime;
+ }
+
+TInt CAlmModel::OrphanAlarmNumber() const
+ {
+ // Get the alarms
+ RArray clockIds(KMaxClockAlarms);
+ CleanupClosePushL(clockIds);
+ iAlmSvr.GetAlarmIdListForCategoryL(KASCliCategoryClock, clockIds);
+
+ //which are orphaned?
+ TInt count = clockIds.Count();
+ TInt orphaned = 0;
+ for (TInt ii=0; iiHandleUpdate(aNotification);
+ iDoingViewNotify=EFalse;
+ }
+
+void CModelBase::SetResponderActive(CModelResponder* aResponder)
+//
+// Set the engines responder
+//
+ {
+ iResponder=aResponder;
+ if (iResponder)
+ CActiveScheduler::Add(iResponder);
+ }
+
+void CModelBase::Start()
+//
+// Start the responder
+// The engine requires that an active scheduler be installed
+//
+ {
+ iResponder->Start();
+ }
+
+void CModelBase::Stop()
+//
+// Stop the responder and the engine
+//
+ {
+ if (iResponder)
+ iResponder->Cancel();
+ }
+
+void CModelBase::SetTimewModelObserver(MTimewModelObserver *aObserver)
+//
+// Register the observer of the engine
+//
+ {
+ iObserver=aObserver;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/SM_RSP.CPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/SM_RSP.CPP Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,90 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "sm_std.h"
+#include "almmod.h"
+
+//
+// class CModelResponder
+//
+
+CModelResponder::CModelResponder(CModelBase& aModel,TInt aPriority)
+//
+// Base class constructor
+//
+ : CActive(aPriority), iModel(&aModel)
+ {
+ }
+
+void CModelResponder::NotifyModel(TInt aStatus)
+//
+// Funnel all response to the engine
+//
+ {
+ iModel->ProcessResponder(aStatus);
+ }
+
+void CModelResponder::RunL()
+//
+// Handle changes in the servers
+//
+ {
+// Reset the status request before notifiying the view
+// so that it can catch anything untoward that the view does
+ TInt v=iStatus.Int();
+ Start();
+ NotifyModel(v);
+ }
+
+void CModelResponder::Start()
+//
+// Start the response
+//
+ {
+ if (!IsActive())
+ {
+ SetActive();
+ DoStart();
+ }
+ }
+
+//
+// class CAlmResponder
+//
+
+CAlmResponder::CAlmResponder(RASCliSession& aSvr,CAlmModel& aModel,TInt aResponderPriority)
+//
+// Protected constructor
+//
+ : CModelResponder(aModel,aResponderPriority),iAlmSvr(&aSvr)
+ {
+ }
+
+void CAlmResponder::DoStart()
+//
+// Start a repsonse
+//
+ {
+ iAlmSvr->NotifyChange(iStatus, iAlarmId);
+ }
+
+void CAlmResponder::DoCancel()
+//
+// Stop the response
+//
+ {
+ if (iStatus == KRequestPending)
+ iAlmSvr->NotifyChangeCancel();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/SM_UTL.CPP
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/SM_UTL.CPP Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 1997-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "sm_std.h"
+
+
+GLDEF_C void Panic(TModelPanic aPanic)
+//
+// Panic in the engine
+//
+ {
+ User::Panic(_L("TW-ENG-PANIC"),aPanic);
+ }
+
+GLDEF_C void Fault(TModelFault aFault)
+//
+// Fault in the engine
+//
+ {
+ User::Panic(_L("TW-ENG-FAULT"),aFault);
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/TestTimewBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/TestTimewBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,62 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimewCase which is the base class for all the Timew TestCase DLL
+//
+//
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include "TestTimewbase.h"
+
+CTestTimewBase::CTestTimewBase()
+: CTestStep()
+, iSchedular(NULL)
+, iModel(NULL)
+ {
+ }
+
+// destructor
+CTestTimewBase::~CTestTimewBase()
+ {
+ delete iSchedular;
+ iSchedular=NULL;
+ }
+
+enum TVerdict CTestTimewBase::doTestStepPreambleL()
+ {
+ iSchedular=new CActiveScheduler();
+ CActiveScheduler::Install(iSchedular);
+
+ return CTestStep::doTestStepPreambleL();
+ }
+
+enum TVerdict CTestTimewBase::doTestStepPostambleL()
+ {
+ delete iSchedular;
+ iSchedular=NULL;
+ CActiveScheduler::Install(NULL);
+
+ return CTestStep::doTestStepPostambleL();
+ }
+
+CAlmModel* CTestTimewBase::Model(void)
+/**
+returns a pointer to an instance of CAgnModel
+*/
+ {
+ return iModel;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/TestTimewServer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/TestTimewServer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,106 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This main DLL entry point for the Smoketest_Timew.dll
+//
+//
+
+
+// EPOC includes
+#include
+
+#include "TestTimewServer.h"
+#include "TestTimewSetAlarm.h"
+
+
+_LIT(KServerName,"Smoketest_Timew_Server");
+
+CTestTimewServer* CTestTimewServer::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+ {
+ CTestTimewServer* server = new (ELeave) CTestTimewServer();
+ CleanupStack::PushL(server);
+ // CServer base class call
+ server->StartL(KServerName);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+ {
+#if (defined __DATA_CAGING__)
+ RProcess().DataCaging(RProcess::EDataCagingOn);
+ RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+ CActiveScheduler* sched=NULL;
+ sched=new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(sched);
+ CTestTimewServer* server = NULL;
+ // Create the CTestServer derived server
+ TRAPD(err,server = CTestTimewServer::NewL());
+ if(!err)
+ {
+ // Sync with the client and enter the active scheduler
+ RProcess::Rendezvous(KErrNone);
+ sched->Start();
+ }
+ delete server;
+ delete sched;
+ }
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+ if (!err) { }
+
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return KErrNone;
+ }
+
+
+CTestStep* CTestTimewServer::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+ {
+ CTestStep* testStep = NULL;
+
+ if(aStepName == _L("SetAlarm"))
+ testStep = new CTestTimewSetAlarm();
+ return testStep;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/Src/TestTimewSetAlarm.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/Src/TestTimewSetAlarm.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,84 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimewSetAlarm
+//
+//
+
+#include
+
+#include "TestTimewSetAlarm.h"
+
+
+_LIT(KHour, "hour");
+_LIT(KMinute,"minute");
+_LIT(KMessage,"message");
+_LIT(KBells,"bells");
+
+
+// constructor
+CTestTimewSetAlarm::CTestTimewSetAlarm()
+ {
+ SetTestStepName(_L("SetAlarm"));
+ }
+
+// destructor
+CTestTimewSetAlarm::~CTestTimewSetAlarm()
+ {
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestTimewSetAlarm::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> SETTING AN ALARM"));
+ TRAPD(r, SetAlarmL());
+
+ if (r!=KErrNone)
+ SetTestStepResult(EFail);
+
+ // test steps return a result
+ return TestStepResult();
+ }
+
+void CTestTimewSetAlarm::SetAlarmL( void )
+ {
+ TInt hour;
+ TInt minute;
+ TPtrC ptrMessage;
+
+ TTime alarmTime;
+ alarmTime.HomeTime();
+
+ if ( !GetIntFromConfig(ConfigSection(), KHour(), hour) )
+ hour=alarmTime.DateTime().Hour();
+
+ if ( !GetIntFromConfig(ConfigSection(), KMinute(), minute) )
+ minute=0;
+
+ GetStringFromConfig(ConfigSection(), KMessage(), ptrMessage);
+
+
+ TDateTime dateTime=alarmTime.DateTime();
+ dateTime.SetHour(hour);
+ dateTime.SetMinute(minute);
+ dateTime.SetSecond(0);
+ dateTime.SetMicroSecond(0);
+ iAlarmData.NextDueTime()=dateTime;
+ iAlarmData.RepeatDefinition()=(TAlarmRepeatDefinition)EAlarmRepeatDefintionRepeatNext24Hours;
+ iAlarmData.Message() = ptrMessage;
+ iAlarmData.SoundName()=KBells();
+ iModel = CAlmModel::NewL(NULL,KPriorityAlarmResponder);
+ Model()->ClockAlarmSet(0,iAlarmData);
+ delete iModel;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/TestData/Smoketest_Timew.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/TestData/Smoketest_Timew.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,5 @@
+[24560_SetAlarm]
+hour =9
+min =0
+message =make a cup of tea
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/bmarm/CONSOLEALARMALERTSERVERU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/bmarm/CONSOLEALARMALERTSERVERU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,2 @@
+EXPORTS
+ StartConsoleAlarmAlertServerL__23ConsoleAlarmAlertServerPv @1 NONAME ; public: static void __cdecl ConsoleAlarmAlertServer::StartConsoleAlarmAlertServerL(void *)
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/bwins/CONSOLEALARMALERTSERVERU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/bwins/CONSOLEALARMALERTSERVERU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,3 @@
+EXPORTS
+ ?StartConsoleAlarmAlertServerL@ConsoleAlarmAlertServer@@SAXPAX@Z @ 1 NONAME ; public: static void __cdecl ConsoleAlarmAlertServer::StartConsoleAlarmAlertServerL(void *)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/bwins/SMOKETEST_TIMEW_SERVERU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/bwins/SMOKETEST_TIMEW_SERVERU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,3 @@
+EXPORTS
+ ?NewServer@@YAHXZ @ 1 NONAME ; int __cdecl NewServer(void)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Timew/eabi/ConsoleAlarmAlertServerU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Timew/eabi/ConsoleAlarmAlertServerU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,11 @@
+EXPORTS
+ _ZN23ConsoleAlarmAlertServer29StartConsoleAlarmAlertServerLEPv @ 1 NONAME
+ _ZTI24CConsoleAlarmAlertServer @ 2 NONAME ; ##
+ _ZTI25CConsoleAlarmAlertConsole @ 3 NONAME ; ##
+ _ZTI25CConsoleAlarmAlertSession @ 4 NONAME ; ##
+ _ZTI28CConsoleAlarmAlertLEDFlasher @ 5 NONAME ; ##
+ _ZTV24CConsoleAlarmAlertServer @ 6 NONAME ; ##
+ _ZTV25CConsoleAlarmAlertConsole @ 7 NONAME ; ##
+ _ZTV25CConsoleAlarmAlertSession @ 8 NONAME ; ##
+ _ZTV28CConsoleAlarmAlertLEDFlasher @ 9 NONAME ; ##
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestActive.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestActive.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,115 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestActive
+//
+//
+
+#if (!defined __SMOKETEST_ACTIVE_H__)
+#define __SMOKETEST_ACTIVE_H__
+
+#include
+
+/**
+ * Multimedia test timer completion callback
+ */
+class MTestActiveCallback
+ {
+public:
+ /**
+ * Method from which CTestActive informs the user RunL call
+ */
+ virtual void RunL() = 0;
+ /**
+ * Method from which CTestActive informs the user DoCancel call
+ */
+ virtual void DoCancel() = 0;
+ };
+
+/**
+ * Test Active Notification class
+ *
+ */
+class CTestActive : public CActive
+{
+public:
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CTestActive();
+
+ /**
+ * Two phase constructor that allocates and constructs
+ * a new Active object whos actions are performed by a callback
+ *
+ * \param aTestActiveCallback object to inform on RunL.
+ * \param aPriority priority of active object.
+ * \return New Callback active object.
+ */
+ IMPORT_C static CTestActive* NewL(MTestActiveCallback& aTestActiveCallback, TInt aPriority=EPriorityStandard);
+
+ /**
+ * Two phase constructor that allocates and constructs
+ * a new Active object whos actions are performed by a callback
+ *
+ * \param aTestActiveCallback object to inform on RunL.
+ * \param aPriority priority of active object.
+ * \return New Callback active object.
+ */
+ IMPORT_C static CTestActive* NewLC(MTestActiveCallback& aTestActiveCallback, TInt aPriority=EPriorityStandard);
+
+ /**
+ * Activate the object
+ */
+ IMPORT_C void Activate();
+
+ /**
+ * Active object RunL implementation.
+ *
+ * Calls the MTestActiveCallback::RunL to inform user that the RunL has been reached.
+ */
+ void RunL();
+ /**
+ * Active object DoCancel implementation.
+ *
+ * Calls the MTestActiveCallback::DoCancel to inform user that the DoCancel has been reached.
+ */
+ void DoCancel();
+
+protected:
+ /**
+ * Protected constructor with timer completion callback and priority.
+ *
+ * Called by two phase constructor.
+ *
+ * \param aTestTimerCallback object to inform on timer completion.
+ * \param aPriority priority of active object.
+ */
+ CTestActive(MTestActiveCallback& aTestActiveCallback, TInt aPriority);
+
+private:
+ /**
+ * This is internal and not intended for use.
+ *
+ * Second phase of two phase constructor.
+ */
+ void ConstructL();
+
+private:
+ /**
+ * This is internal and not intended for use.
+ */
+ MTestActiveCallback& iTestActiveCallback;
+};
+
+#endif /* __SMOKETEST_ACTIVE_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestProperty.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestProperty.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,93 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestProperty
+//
+//
+
+#if (!defined __SMOKETEST_PROPERTY_H__)
+#define __SMOKETEST_PROPERTY_H__
+
+// EPOC includes
+#include
+#include
+
+/**
+ This class contains generic utility method to set system wide variable usign publish and subscribe
+*/
+class CTestProperty : public CBase
+{
+public:
+ IMPORT_C CTestProperty(CTestStep& aTestStep);
+ IMPORT_C ~CTestProperty();
+
+ /**
+ * Set a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key
+ */
+ IMPORT_C TInt SetPropertyL(const TUid aCategory, const TInt aKey, const TInt aValue);
+
+ /**
+ * Set a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key
+ */
+ IMPORT_C TInt SetPropertyL(const TUid aCategory, const TInt aKey, const TDesC8& aValue);
+
+ /**
+ * Set a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key
+ */
+ IMPORT_C TInt SetPropertyL(const TUid aCategory, const TInt aKey, const TDesC16& aValue);
+
+ /**
+ * Get a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key returned
+ */
+ IMPORT_C TInt GetPropertyL(const TUid aCategory, const TInt aKey, TInt& aValue);
+
+ /**
+ * Get a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key returned
+ */
+ IMPORT_C TInt GetPropertyL(const TUid aCategory, const TInt aKey, TDes8& aValue);
+
+ /**
+ * Get a property
+ *
+ * \param aCategory catagory of the RProperty
+ * \param aKey key of the catagory
+ * \param aValue value of the key returned
+ */
+ IMPORT_C TInt GetPropertyL(const TUid aCategory, const TInt aKey, TDes16& aValue);
+
+private:
+ CTestStep& iTestStep;
+ RProperty iProperty;
+};
+
+#endif /* __SMOKETEST_PROPERTY_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSclient.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSclient.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,34 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __SMOKETEST_SECURE_FS_CLIENT_H__
+#define __SMOKETEST_SECURE_FS_CLIENT_H__
+
+#include
+
+class RTestSecureFSclient : public RSessionBase
+ {
+public:
+ IMPORT_C TInt Connect();
+ IMPORT_C TInt SetHomeTime(const TTime& aTime);
+ IMPORT_C TInt DeleteFileL(const TDesC& aFileName);
+ IMPORT_C void KillProcessL(const TDesC& aProcessName);
+ IMPORT_C TInt ChangeLocaleName(const TDesC& aLocaleDllName);
+ IMPORT_C TInt CheckForFile(const TDesC& aFileName);
+ IMPORT_C TInt CopyFile(const TDesC& Source, const TDesC& Dest);
+ IMPORT_C void SetUpFbs();
+ };
+
+#endif // __SMOKETEST_SECURE_FS_CLIENT_H__
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSclientserver.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSclientserver.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// clientserver - shared client/server definitions
+//
+//
+
+#ifndef __SMOKETEST_SECURE_FS_CLIENT_SERVER_H__
+#define __SMOKETEST_SECURE_FS_CLIENT_SERVER_H__
+
+#include
+
+_LIT(KTestServerName,"SmokeTestSecureFSserver");
+_LIT(KTestServerImg,"SmokeTestSecureFSserver"); // EXE name
+const TUid KServerUid3={0x101FF346};
+
+const TInt KMaxTestMessage=8;
+
+enum TTestIpc
+ {
+ ETestIpcSetHomeTime,
+ ETestIpcDeleteFile,
+ ETestIpcKillProcess,
+ ETestIpcChangeLocale,
+ ETestIpcCheckForFile,
+ ETestIpcCopyFile,
+ ETestIpcSetUpFbs,
+ };
+
+#endif // __SMOKETEST_SECURE_FS_CLIENT_SERVER_H__
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSserver.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestSecureFSserver.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,91 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestServer - server classes
+//
+//
+
+#ifndef __SMOKETEST_SECURE_FS_SERVER_H__
+#define __SMOKETEST_SECURE_FS_SERVER_H__
+
+#include
+#include "SmokeTestSecureFSclientserver.h"
+
+enum TTestPanic
+ {
+ EPanicBadDescriptor,
+ EPanicIllegalFunction,
+ EPanicAlreadyReceiving
+ };
+
+void PanicClient(const RMessage2& aMessage,TTestPanic TMyPanic);
+
+class CTestSecureFSshutdown : public CTimer
+ {
+ enum {KMyShutdownDelay=0x500000}; // approx 5s
+public:
+ inline CTestSecureFSshutdown();
+ inline void ConstructL();
+ inline void Start();
+private:
+ void RunL();
+ };
+
+class CTestSecureFSserver : public CServer2
+ {
+public:
+ static CServer2* NewLC();
+ void AddSession();
+ void DropSession();
+ void Send(const TDesC& aMessage);
+private:
+ CTestSecureFSserver();
+ void ConstructL();
+ // CSharableSession* NewSessionL(const TVersion& aVersion, const RMessage& aMessage) const;
+ CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
+private:
+ TInt iSessionCount;
+ CTestSecureFSshutdown iShutdown;
+ };
+
+//class CTestSecureFSSession : public CSharableSession
+class CTestSecureFSSession : public CSession2
+ {
+public:
+ CTestSecureFSSession();
+ void CreateL();
+ void Send(const TDesC& aMessage);
+private:
+ ~CTestSecureFSSession();
+ inline CTestSecureFSserver& Server();
+ void ServiceL(const RMessage2& aMessage);
+ void ServiceError(const RMessage2& aMessage,TInt aError);
+ inline TBool ReceivePending() const;
+private:
+ void DoSetHomeTime(const RMessage2& aMessage);
+
+ // General File Manipulation
+ TInt DoDeleteFileL(const RMessage2& aMessage);
+
+ // Power User
+ void DoKillProcess(const RMessage2& aMessage);
+ TInt DoChangeLocale(const RMessage2& aMessage);
+ TInt DoCheckForFile(const RMessage2& aMessage);
+ TInt DoCopyFile(const RMessage2& aMessage);
+ void DoSetUpFbs();
+
+private:
+ RMessage2 iReceive;
+ };
+
+#endif // __SMOKETEST_SECURE_FS_SERVER_H__
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/SmokeTestTimeOutTimer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/SmokeTestTimeOutTimer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,102 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestTimeOutTimer
+//
+//
+
+#if (!defined __SMOKETEST_TIMEOUT_TIMER_H_)
+#define __SMOKETEST_TIMEOUT_TIMER_H_
+
+#include
+
+/**
+ * Multimedia test timer completion callback
+ */
+class MTestTimeOutTimerCallback
+ {
+public:
+ /**
+ * Method from which CTestTimeOutTimer informs the user of the timer completion.
+ */
+ virtual void TimerCompleted() = 0;
+ };
+
+/**
+ * Multimedia test timer active object.
+ *
+ * On timer completion MTestTimeOutTimerCallback::TimerCompleted is called
+ * to inform the user off the completion
+ */
+class CTestTimeOutTimer : public CTimer
+{
+public:
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CTestTimeOutTimer();
+
+ /**
+ * Two phase constructor that allocates and constructs
+ * a new Multimedia timer a timer completion callback and priority.
+ *
+ * \param aTestTimerCallback object to inform on timer completion.
+ * \param aPriority priority of active object.
+ * \return New Multimedia test timer active object.
+ */
+ IMPORT_C static CTestTimeOutTimer* NewL(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority=EPriorityStandard);
+
+ /**
+ * Two phase constructor that allocates and constructs
+ * a new Multimedia timer a timer completion callback and priority.
+ *
+ * \param aTestTimerCallback object to inform on timer completion.
+ * \param aPriority priority of active object.
+ * \return New Multimedia test timer active object.
+ */
+ IMPORT_C static CTestTimeOutTimer* NewLC(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority=EPriorityStandard);
+
+ /**
+ * Active object RunL implementation.
+ *
+ * Calls the MTestTimeOutTimerCallback::TimerCompleted to inform user that the timer has completed.
+ */
+ void RunL();
+
+protected:
+ /**
+ * Protected constructor with timer completion callback and priority.
+ *
+ * Called by two phase constructor.
+ *
+ * \param aTestTimerCallback object to inform on timer completion.
+ * \param aPriority priority of active object.
+ */
+ CTestTimeOutTimer(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority);
+
+private:
+ /**
+ * This is internal and not intended for use.
+ *
+ * Second phase of two phase constructor.
+ */
+ void ConstructL();
+
+private:
+ /**
+ * This is internal and not intended for use.
+ */
+ MTestTimeOutTimerCallback& iTestTimerCallback;
+};
+
+#endif /* __SMOKETEST_TIMEOUT_TIMER_H_ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Inc/TestStepSmokeTest.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Inc/TestStepSmokeTest.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,80 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestStepSmokeTest
+//
+//
+
+#if (!defined __TEST_STEP_SMOKETEST_H__)
+#define __TEST_STEP_SMOKETEST_H__
+
+//TEF include
+#include
+#include "Configuration.cfg"
+
+enum TTestLoggingDetail
+ {
+ ETestLoggingDetail_Min,
+ ETestLoggingDetail_Normal,
+ ETestLoggingDetail_Max,
+ };
+
+#if (defined __VERSION_70S__)
+enum TCapability
+ {
+ ECapabilityTCB = 0,
+ };
+#endif
+
+/**
+ This class is the base class for all the test steps in smoketest.
+*/
+class CTestStepSmokeTest : public CTestStep
+ {
+public:
+ //Destructor
+ IMPORT_C virtual ~CTestStepSmokeTest();
+
+ /**
+ Pure virtual, to be implemented by the derived test steps.
+ It implements the required functionality of the test step.
+ @return TVerdict - result of the test step
+ @leave - System wide error codes
+ */
+ IMPORT_C virtual enum TVerdict doTestStepL() = 0;
+
+ //Implements the preoperational functionalities for a test step
+ IMPORT_C virtual enum TVerdict doTestStepPreambleL();
+
+ //Implements the post operational fucntionalities for a test step
+ IMPORT_C virtual enum TVerdict doTestStepPostambleL();
+
+ TTestLoggingDetail LoggingDetail() const { return iLoggingDetail; }
+ TInt Repetition() const { return iRepetition; }
+
+protected:
+ //Constructor
+ IMPORT_C CTestStepSmokeTest();
+
+ //Gets the TCapability value for the capabilty string literal
+ IMPORT_C TInt GetCapability(TPtrC aCapability, TCapability& aCapabilityValue);
+
+ //Verifies the given time is nearly eaual to current UTC time
+ IMPORT_C TBool VerifyUTCTime(TTime aTime);
+
+private:
+ TTestLoggingDetail iLoggingDetail;
+ TInt iRepetition;
+ };
+
+#endif /* __TEST_STEP_SMOKETEST_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/ReadMe.doc
Binary file common/tools/ats/smoketest/Utils/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/SmokeTestActive.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/SmokeTestActive.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,69 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// SmokeTestTestActive.h
+// This contains CTestActive
+//
+//
+
+#include "SmokeTestActive.h"
+
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+EXPORT_C CTestActive::~CTestActive()
+ {
+ }
+
+EXPORT_C CTestActive* CTestActive::NewL(MTestActiveCallback& aTestActiveCallback, TInt aPriority)
+ {
+ CTestActive* self=NewLC(aTestActiveCallback, aPriority);
+ CleanupStack::Pop();
+ return self;
+ }
+
+EXPORT_C CTestActive* CTestActive::NewLC(MTestActiveCallback& aTestActiveCallback, TInt aPriority)
+ {
+ CTestActive* self=new(ELeave) CTestActive(aTestActiveCallback, aPriority);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+EXPORT_C void CTestActive::Activate()
+ {
+ SetActive();
+ }
+
+CTestActive::CTestActive(MTestActiveCallback& aTestActiveCallback, TInt aPriority)
+: CActive(aPriority)
+, iTestActiveCallback(aTestActiveCallback)
+ {
+ }
+
+void CTestActive::ConstructL()
+ {
+ CActiveScheduler::Add(this);
+ }
+
+void CTestActive::RunL()
+ {
+ iTestActiveCallback.RunL();
+ }
+
+void CTestActive::DoCancel()
+ {
+ iTestActiveCallback.DoCancel();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/SmokeTestProperty.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/SmokeTestProperty.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,140 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestProperty
+//
+//
+
+#include "SmokeTestProperty.h"
+
+// EPOC32 include
+#include
+
+EXPORT_C CTestProperty::CTestProperty(CTestStep& aTestStep)
+: CBase()
+, iTestStep(aTestStep)
+ {
+ }
+
+EXPORT_C CTestProperty::~CTestProperty()
+ {
+ }
+
+EXPORT_C TInt CTestProperty::SetPropertyL(const TUid aCategory, const TInt aKey, const TInt aValue)
+ {
+ //Define the property, in case it is being used for the first time.
+ TInt ret=RProperty::Define(aCategory, aKey, RProperty::EInt);
+ if ( (ret==KErrNone) || (ret== KErrAlreadyExists) )
+ {
+ //Attach to the property so that you can track any chnages to it.
+ ret=iProperty.Attach(aCategory, aKey);
+ if ( ret==KErrNone )
+ {
+ //Set the new test number and wait until the change is in effect.
+ TRequestStatus status;
+ iProperty.Subscribe(status);
+ ret=iProperty.Set(aCategory, aKey, aValue);
+ if ( ret==KErrNone )
+ {
+ User::WaitForRequest(status);
+ ret=status.Int();
+ if ( ret != KErrNone )
+ {
+ iTestStep.INFO_PRINTF2(_L("request complete error=%d"), ret);
+ }
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF2(_L("RProperty::Set error=%d"), ret);
+ }
+ iProperty.Close();
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF2(_L("RProperty::Attach error=%d"), ret);
+ }
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF2(_L("RProperty::Define error=%d"), ret);
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt CTestProperty::SetPropertyL(const TUid aCategory, const TInt aKey, const TDesC8& aValue)
+ {
+ //Define the property, in case it is being used for the first time.
+ TInt ret=RProperty::Define(aCategory, aKey, RProperty::EByteArray);
+ if ( (ret==KErrNone) || (ret== KErrAlreadyExists) )
+ {
+ //Attach to the property so that you can track any chnages to it.
+ ret=iProperty.Attach(aCategory, aKey);
+ if ( ret==KErrNone )
+ {
+ //Set the new test number and wait until the change is in effect.
+ TRequestStatus status;
+ iProperty.Subscribe(status);
+ ret=iProperty.Set(aCategory, aKey, aValue);
+ if ( ret==KErrNone )
+ {
+ User::WaitForRequest(status);
+ ret=status.Int();
+ }
+ iProperty.Close();
+ }
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt CTestProperty::SetPropertyL(const TUid aCategory, const TInt aKey, const TDesC16& aValue)
+ {
+ //Define the property, in case it is being used for the first time.
+ TInt ret=RProperty::Define(aCategory, aKey, RProperty::EText);
+ if ( (ret==KErrNone) || (ret== KErrAlreadyExists) )
+ {
+ //Attach to the property so that you can track any chnages to it.
+ ret=iProperty.Attach(aCategory, aKey);
+ if ( ret==KErrNone )
+ {
+ //Set the new test number and wait until the change is in effect.
+ TRequestStatus status;
+ iProperty.Subscribe(status);
+ ret=iProperty.Set(aCategory, aKey, aValue);
+ if ( ret==KErrNone )
+ {
+ User::WaitForRequest(status);
+ ret=status.Int();
+ }
+ iProperty.Close();
+ }
+ }
+
+ return ret;
+ }
+
+EXPORT_C TInt CTestProperty::GetPropertyL(const TUid aCategory, const TInt aKey, TInt& aValue)
+ {
+ return RProperty::Get(aCategory, aKey, aValue);
+ }
+
+EXPORT_C TInt CTestProperty::GetPropertyL(const TUid aCategory, const TInt aKey, TDes8& aValue)
+ {
+ return RProperty::Get(aCategory, aKey, aValue);
+ }
+
+EXPORT_C TInt CTestProperty::GetPropertyL(const TUid aCategory, const TInt aKey, TDes16& aValue)
+ {
+ return RProperty::Get(aCategory, aKey, aValue);
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/SmokeTestSecureFSclient.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/SmokeTestSecureFSclient.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,112 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Test Server - client interface implementation
+//
+//
+
+#include
+#include
+#include "SmokeTestSecureFSclientserver.h"
+#include "SmokeTestSecureFSclient.h"
+
+static TInt StartServer()
+//
+// Start the server process. Simultaneous launching
+// of two such processes should be detected when the second one attempts to
+// create the server object, failing with KErrAlreadyExists.
+//
+ {
+ const TUidType serverUid(KNullUid,KNullUid,KServerUid3);
+
+
+ RProcess server;
+ TInt r=server.Create(KTestServerImg, KNullDesC, serverUid);
+
+ if (r!=KErrNone)
+ return r;
+ TRequestStatus stat;
+
+ server.Rendezvous(stat);
+
+ if (stat != KRequestPending)
+ server.Kill(0); // abort startup
+ else
+ server.Resume(); // logon OK - start the server
+ User::WaitForRequest(stat); //wait for start or death
+ // we can't use the 'exit reason' if the server panicked as this
+ // is the panic 'reason' and may be '0' which cannot be distinguished
+ // from KErrNone
+ r=(server.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+ server.Close();
+ return r;
+ }
+
+EXPORT_C TInt RTestSecureFSclient::Connect()
+ {// Connect to the server, attempting to start it if necessary
+ TInt retry=2;
+ for (;;)
+ {
+ TInt r=CreateSession(KTestServerName,TVersion(0,0,0),1);
+ if (r!=KErrNotFound && r!=KErrServerTerminated)
+ return r;
+ if (--retry==0)
+ return r;
+ r=StartServer();
+ if (r!=KErrNone && r!=KErrAlreadyExists)
+ return r;
+ User::After(1000000); //Let server load up (in EKA2)
+
+ }
+ }
+
+EXPORT_C TInt RTestSecureFSclient::SetHomeTime(const TTime& aTime)
+ {
+ TPckg pckg(aTime);
+ return SendReceive(ETestIpcSetHomeTime,TIpcArgs(&pckg));
+ }
+
+EXPORT_C TInt RTestSecureFSclient::DeleteFileL(const TDesC& aFileName)
+ {
+ TIpcArgs args(&aFileName);
+ return SendReceive(ETestIpcDeleteFile,args);
+ }
+
+EXPORT_C void RTestSecureFSclient::KillProcessL(const TDesC& aProcessName)
+ {
+ TIpcArgs args(&aProcessName);
+ User::LeaveIfError(SendReceive(ETestIpcKillProcess,args));
+ }
+
+EXPORT_C TInt RTestSecureFSclient::ChangeLocaleName(const TDesC& aLocaleDllName)
+ {
+ TIpcArgs args(&aLocaleDllName);
+ return SendReceive(ETestIpcChangeLocale,args);
+ }
+
+EXPORT_C TInt RTestSecureFSclient::CheckForFile(const TDesC& aFileName)
+ {
+ TIpcArgs args(&aFileName);
+ return SendReceive(ETestIpcCheckForFile,args);
+ }
+
+EXPORT_C TInt RTestSecureFSclient::CopyFile(const TDesC& Source, const TDesC& Dest)
+ {
+ TIpcArgs args(&Source, &Dest);
+ return SendReceive(ETestIpcCopyFile,args);
+ }
+
+EXPORT_C void RTestSecureFSclient::SetUpFbs()
+ {
+ SendReceive(ETestIpcSetUpFbs);
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/SmokeTestSecureFSserver.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/SmokeTestSecureFSserver.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,391 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestServer - server implementation
+//
+//
+
+#include "e32std.h"
+#include "SmokeTestSecureFSserver.h"
+#include
+
+TRequestStatus aStatus;
+TRequestStatus* aSt = &aStatus;
+
+
+inline CTestSecureFSshutdown::CTestSecureFSshutdown()
+ :CTimer(-1)
+ {CActiveScheduler::Add(this);}
+inline void CTestSecureFSshutdown::ConstructL()
+ {CTimer::ConstructL();}
+inline void CTestSecureFSshutdown::Start()
+ {After(KMyShutdownDelay);}
+
+inline CTestSecureFSserver::CTestSecureFSserver()
+ :CServer2(0,ESharableSessions)
+ {}
+
+inline CTestSecureFSSession::CTestSecureFSSession()
+ {}
+inline CTestSecureFSserver& CTestSecureFSSession::Server()
+ {return *static_cast(const_cast(CSession2::Server()));}
+inline TBool CTestSecureFSSession::ReceivePending() const
+ {return !iReceive.IsNull();}
+
+///////////////////////
+
+void CTestSecureFSSession::CreateL()
+//
+// 2nd phase construct for sessions - called by the CServer framework
+//
+ {
+ //RDebug::Print(_L("Server::CTestSecureFSSession::CreateL - start"));
+
+ Server().AddSession();
+ //RDebug::Print(_L("Server::CTestSecureFSSession::CreateL - end"));
+ }
+
+CTestSecureFSSession::~CTestSecureFSSession()
+ {
+ Server().DropSession();
+ }
+
+void CTestSecureFSSession::Send(const TDesC& aMessage)
+//
+// Deliver the message to the client, truncating if required
+// If the write fails, panic the client, not the sender
+//
+ {
+ if (ReceivePending())
+ {
+ TPtrC m(aMessage);
+ if (iReceive.Int1() pckg;
+ aMessage.Read(0,pckg);
+ User::SetHomeTime(pckg());
+ }
+
+TInt CTestSecureFSSession::DoDeleteFileL(const RMessage2& aMessage)
+ {
+ RFs fs;
+ TFileName* const fileName=new(ELeave) TFileName;
+ CleanupStack::PushL(fileName);
+ User::LeaveIfError(fs.Connect());
+
+ CleanupClosePushL(fs);
+ aMessage.ReadL(0,*fileName);
+ TInt err=fs.Delete(*fileName);
+ if (!(err==KErrNone || err==KErrNotFound || err==KErrPathNotFound)) // ignore not found error
+ {
+ User::Leave(err);
+ }
+ CleanupStack::PopAndDestroy(&fs);
+ CleanupStack::PopAndDestroy(fileName);
+ return err;
+ }
+
+void CTestSecureFSSession::DoKillProcess(const RMessage2& aMessage)
+ {
+ TFullName* name = new(ELeave) TFullName;
+ CleanupStack::PushL(name);
+
+ aMessage.ReadL(0,*name);
+ TFindProcess* finder = new (ELeave) TFindProcess(*name);
+ CleanupStack::PushL(finder);
+ RProcess* process = new (ELeave) RProcess;
+ CleanupStack::PushL(process);
+
+ if (finder->Next(*name) == KErrNone)
+ {
+ if (process->Open(*name) == KErrNone)
+ {
+ process->Kill(KErrNone);
+ }
+ }
+
+ if (process != NULL)
+ {
+ process->Close();
+ }
+ CleanupStack::PopAndDestroy(process);
+ CleanupStack::PopAndDestroy(finder);
+ CleanupStack::PopAndDestroy(name);
+ }
+
+
+TInt CTestSecureFSSession::DoChangeLocale(const RMessage2& aMessage)
+ {
+ TBuf<50> locname;
+ TInt result;
+ aMessage.ReadL(0,locname);
+
+ result = UserSvr::ChangeLocale(locname);
+
+ return result;
+ }
+
+TInt CTestSecureFSSession::DoCheckForFile(const RMessage2& aMessage)
+{
+ RFs fs;
+ TInt err;
+ TFileName* const fileName=new(ELeave) TFileName;
+ CleanupStack::PushL(fileName);
+ User::LeaveIfError(fs.Connect());
+
+ CleanupClosePushL(fs);
+ aMessage.ReadL(0,*fileName);
+
+ TUint attribs;
+ err=fs.Att(*fileName, attribs);
+ fs.Close();
+
+ CleanupStack::PopAndDestroy(&fs);
+ CleanupStack::PopAndDestroy(fileName);
+ return err;
+
+}
+
+TInt CTestSecureFSSession::DoCopyFile(const RMessage2& aMessage)
+{
+
+ RFs fs;
+ TInt result;
+
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+
+ TFileName fileSource;
+ TFileName fileDest;
+
+ aMessage.ReadL(0,fileSource);
+ aMessage.ReadL(1,fileDest);
+
+ CFileMan* fileMan = NULL;
+
+ fileMan = CFileMan::NewL(fs);
+ CleanupStack::PushL( fileMan );
+
+ fs.MkDirAll(fileDest);
+ result = fileMan->Copy( fileSource, fileDest, CFileMan::EOverWrite );
+
+ User::LeaveIfError(fs.Connect());
+ fs.SetAtt(fileDest,KEntryAttNormal,KEntryAttReadOnly);
+ fs.Close();
+
+ CleanupStack::PopAndDestroy(fileMan);
+ CleanupStack::PopAndDestroy(&fs);
+ return result;
+
+}
+
+void CTestSecureFSSession::DoSetUpFbs()
+{
+// FbsStartup();
+// User::LeaveIfError( RFbsSession::Connect() );
+// CleanupStack::PushL( TCleanupItem( TCleanupOperation(&RFbsSession::Disconnect ), NULL ) );
+}
+
+////////////////////////////////////////
+
+void CTestSecureFSSession::ServiceError(const RMessage2& aMessage,TInt aError)
+//
+// Handle an error from CMySession::ServiceL()
+// A bad descriptor error implies a badly programmed client, so panic it;
+// otherwise use the default handling (report the error to the client)
+//
+ {
+ if (aError==KErrBadDescriptor)
+ PanicClient(aMessage,EPanicBadDescriptor);
+ CSession2::ServiceError(aMessage,aError);
+ }
+
+void CTestSecureFSshutdown::RunL()
+//
+// Initiate server exit when the timer expires
+//
+ {
+ CActiveScheduler::Stop();
+ }
+
+CServer2* CTestSecureFSserver::NewLC()
+ {
+ CTestSecureFSserver* self=new(ELeave) CTestSecureFSserver;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+void CTestSecureFSserver::ConstructL()
+//
+// 2nd phase construction - ensure the timer and server objects are running
+//
+ {
+ StartL(KTestServerName);
+ iShutdown.ConstructL();
+ // ensure that the server still exits even if the 1st client fails to connect
+ iShutdown.Start();
+ }
+
+
+CSession2* CTestSecureFSserver::NewSessionL(const TVersion&,const RMessage2&) const
+//
+// Cretae a new client session. This should really check the version number.
+//
+ {
+ return new(ELeave) CTestSecureFSSession();
+ }
+
+void CTestSecureFSserver::AddSession()
+//
+// A new session is being created
+// Cancel the shutdown timer if it was running
+//
+ {
+ ++iSessionCount;
+ iShutdown.Cancel();
+ }
+
+void CTestSecureFSserver::DropSession()
+//
+// A session is being destroyed
+// Start the shutdown timer if it is the last session.
+//
+ {
+ if (--iSessionCount==0)
+ iShutdown.Start();
+ }
+
+void CTestSecureFSserver::Send(const TDesC& aMessage)
+//
+// Pass on the signal to all clients
+//
+ {
+ iSessionIter.SetToFirst();
+ CSession2* s;
+ while ((s=iSessionIter++)!=0)
+ static_cast(s)->Send(aMessage);
+ }
+
+void PanicClient(const RMessage2& aMessage,TTestPanic aPanic)
+//
+// RMessage::Panic() also completes the message. This is:
+// (a) important for efficient cleanup within the kernel
+// (b) a problem if the message is completed a second time
+//
+ {
+ _LIT(KPanic,"TestServer");
+ aMessage.Panic(KPanic,aPanic);
+ }
+
+
+
+/**
+Perform all server initialisation, in particular creation of the
+scheduler and server and then run the scheduler
+*/
+
+static void RunServerL()
+ {
+ // naming the server thread after the server helps to debug panics
+ User::LeaveIfError(RThread::RenameMe(KTestServerName));
+ // create and install the active scheduler we need
+ CActiveScheduler* s=new(ELeave) CActiveScheduler;
+ CleanupStack::PushL(s);
+ CActiveScheduler::Install(s);
+ CTestSecureFSserver::NewLC(); // create the server (leave it on the cleanup stack)
+ RProcess::Rendezvous(KErrNone);
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(2); // Cleanup the server and scheduler
+ }
+
+
+
+
+TInt E32Main()
+//
+// Server process entry-point
+//
+ {
+ __UHEAP_MARK;
+ //
+ RDebug::Print(_L("Server::E32Main Version 0.0.0"));
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ TInt r=KErrNoMemory;
+ if (cleanup)
+ {
+ TRAP(r,RunServerL());
+ delete cleanup;
+ }
+ //
+ __UHEAP_MARKEND;
+ return r;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/SmokeTestTimeOutTimer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/SmokeTestTimeOutTimer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,59 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// SmokeTestTimeOutTimer.h
+// This contains CTestTimeOutTimer
+//
+//
+
+#include "SmokeTestTimeOutTimer.h"
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+EXPORT_C CTestTimeOutTimer::~CTestTimeOutTimer()
+ {
+ }
+
+EXPORT_C CTestTimeOutTimer* CTestTimeOutTimer::NewL(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority)
+ {
+ CTestTimeOutTimer* self=NewLC(aTestTimerCallback, aPriority);
+ CleanupStack::Pop();
+ return self;
+ }
+
+EXPORT_C CTestTimeOutTimer* CTestTimeOutTimer::NewLC(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority)
+ {
+ CTestTimeOutTimer* self=new(ELeave) CTestTimeOutTimer(aTestTimerCallback, aPriority);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CTestTimeOutTimer::CTestTimeOutTimer(MTestTimeOutTimerCallback& aTestTimerCallback, TInt aPriority)
+: CTimer(aPriority)
+, iTestTimerCallback(aTestTimerCallback)
+ {
+ }
+
+void CTestTimeOutTimer::ConstructL()
+ {
+ CTimer::ConstructL();
+ CActiveScheduler::Add(this);
+ }
+
+void CTestTimeOutTimer::RunL()
+ {
+ iTestTimerCallback.TimerCompleted();
+ };
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/Src/TestStepSmokeTest.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/Src/TestStepSmokeTest.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,345 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestStepSmokeTest
+//
+//
+
+//user include
+#include "TestStepSmokeTest.h"
+
+//Epoc include
+#include
+#include
+#include
+
+/*@{*/
+_LIT(KExpectedCapCheckResult, "ExpectedCapCheckResult");
+_LIT(KConfigFile, "C:\\plattest\\platsec\\plattest_capabilities.config");
+_LIT(KDefault, "default");
+_LIT(KCapTest, "CapabilityTest");
+_LIT(KNo, "No");
+
+_LIT(KLogging, "logging");
+_LIT(KLoggingMin, "min");
+_LIT(KLoggingNormal, "normal");
+_LIT(KLoggingMax, "max");
+
+_LIT(KRepetition, "repetition");
+/*@}*/
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+/**
+ Constructor
+*/
+EXPORT_C CTestStepSmokeTest::CTestStepSmokeTest()
+: CTestStep()
+, iLoggingDetail(ETestLoggingDetail_Normal)
+, iRepetition(1)
+ {
+ }
+
+/**
+ Destructor
+*/
+EXPORT_C CTestStepSmokeTest::~CTestStepSmokeTest()
+ {
+ }
+
+
+/**
+ The overriden implementation of CTestStep::doTestStepPreambleL()
+ @return TVerdict- result of the test step
+ @leave - system wide error codes
+*/
+EXPORT_C TVerdict CTestStepSmokeTest::doTestStepPreambleL()
+ {
+ TVerdict ret = CTestStep::doTestStepPreambleL();
+
+ // Get logging
+ TPtrC logging;
+ if ( GetStringFromConfig(ConfigSection(), KLogging, logging) )
+ {
+ INFO_PRINTF2(_L("Logging value %S"), &logging);
+ if ( logging.Compare(KLoggingMin) == 0 )
+ {
+ iLoggingDetail=ETestLoggingDetail_Min;
+ }
+ else if ( logging.Compare(KLoggingNormal) == 0 )
+ {
+ iLoggingDetail=ETestLoggingDetail_Normal;
+ }
+ else if ( logging.Compare(KLoggingMax) == 0 )
+ {
+ iLoggingDetail=ETestLoggingDetail_Max;
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Illegal logging value, use min, normal or max."));
+ ret=EFail;
+ }
+ }
+
+ // Get repetition count of test
+ GetIntFromConfig(ConfigSection(), KRepetition, iRepetition);
+ INFO_PRINTF2(_L("Repetition %d"), iRepetition);
+
+ return ret;
+ }
+
+/**
+ The overriden implementation of CTestStep::doTestStepPostambleL()
+ It implements the functionality of capability checking if
+ _PLATTEST_CAPTEST_ is ON.
+ @return TVerdict- result of the test step
+ @leave - system wide error codes
+*/
+
+EXPORT_C TVerdict CTestStepSmokeTest::doTestStepPostambleL()
+ {
+
+ //Read whether to do capability testing..
+ TPtrC captest(KNo);
+ GetStringFromConfig(KDefault, KCapTest, captest);
+ if( captest.Compare(_L("YES")) == 0)
+ {
+ INFO_PRINTF1(_L("---Capability Testing---"));
+ //Gets the capabilities config file
+ TBuf scriptFile;
+ scriptFile.Copy(KConfigFile);
+ INFO_PRINTF2(_L("The config file %S"), &scriptFile);
+
+ TBuf8 scriptSection;
+ scriptSection.Copy(_L("Capabilities"));
+
+ TPtrC serverName = GetServerName();
+ INFO_PRINTF2(_L("The server name is %S"), &serverName);
+ HBufC8 *scriptItem = HBufC8::NewLC(serverName.Length());
+ scriptItem->Des().Copy(serverName);
+
+ //Get the file server session object
+ RFs rFs;
+ TInt err=rFs.Connect();
+ if(err != KErrNone)
+ {
+ ERR_PRINTF1(_L("Failed to connect with File server"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CleanupClosePushL(rFs);
+ //Get the config file
+ CTestConfig* configFile = CTestConfig::NewLC(rFs, KNullDesC, scriptFile);
+ if( configFile == NULL)
+ {
+ WARN_PRINTF1(_L("NO Config file found -- Plattest_capabilites.config"));
+ }
+ else
+ {
+ //Get the item value from config file
+ TBuf8 itemValue;
+ itemValue = configFile->Section(scriptSection)->Item(scriptItem->Des())->Value();
+ TLex8 capabilityParser(itemValue);
+ TBool capCheckResult= ETrue;
+
+ while(!capabilityParser.Eos())
+ {
+ //Parse the capabilities
+ TPtrC8 capability(capabilityParser.NextToken());
+
+ HBufC* capabilityRead = HBufC::NewLC(capability.Length());
+ capabilityRead->Des().Copy(capability);
+ INFO_PRINTF2(_L("Capability Read is %S"), capabilityRead);
+
+ //Get the capability value
+ TCapability capabilityValue;
+ TPtrC ptrCapabilty(capabilityRead->Des());
+ TInt err = GetCapability(ptrCapabilty, capabilityValue);
+ if( err != KErrNone)
+ {
+ WARN_PRINTF1(_L("The capability is not found"));
+ }
+ else
+ {
+ //Check if the current process posses the required capability
+ if( !RProcess().HasCapability(capabilityValue) )
+ {
+ INFO_PRINTF2(_L("The capability %S is not possesed."), capabilityRead);
+ capCheckResult=EFalse;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("The capability %S is possesed."), capabilityRead);
+ }
+ }
+ CleanupStack::PopAndDestroy(capabilityRead);
+ }
+
+ //read the expected capability check result
+ TBool expectedCapCheckResult = ETrue;
+ GetBoolFromConfig(ConfigSection(), KExpectedCapCheckResult, expectedCapCheckResult);
+ INFO_PRINTF2(_L("The expected cap check result is %D"), expectedCapCheckResult);
+ INFO_PRINTF2(_L("The cap check result is %D"), capCheckResult);
+
+ if(expectedCapCheckResult == capCheckResult)
+ {
+ SetTestStepResult(EPass);
+ }
+ else
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+ CleanupStack::PopAndDestroy(2, &rFs);
+ }
+ CleanupStack::PopAndDestroy(scriptItem);
+ if(TestStepError() == KErrPermissionDenied)
+ {
+ INFO_PRINTF1(_L(" The failure is due to Platform Security"));
+ }
+ }
+
+ TVerdict ret = CTestStep::doTestStepPostambleL();
+ return ret;
+ }
+
+/**
+ Get the capability id (enum value) for the capability name
+ given as string.
+ @param aCapability - Capability name
+ @param aCapabilityValue - value for the capability name
+ @return TInt - error codes
+ @leave - None
+*/
+EXPORT_C TInt CTestStepSmokeTest::GetCapability(TPtrC aCapability, TCapability& aCapabilityValue)
+ {
+ INFO_PRINTF2(_L("The capability get is %S"), &aCapability);
+ TInt ret=KErrNone;
+
+ TBuf capCaseValue(aCapability);
+ capCaseValue.LowerCase();
+
+ if(!capCaseValue.Compare(_L("tcb" )))
+ {
+ aCapabilityValue=ECapabilityTCB;
+ }
+ else if(!capCaseValue.Compare(_L("commdd" )))
+ {
+ aCapabilityValue=ECapabilityCommDD;
+ }
+ else if(!capCaseValue.Compare(_L("powermgmt" )))
+ {
+ aCapabilityValue=ECapabilityPowerMgmt;
+ }
+ else if(!capCaseValue.Compare(_L("multimediadd" )))
+ {
+ aCapabilityValue=ECapabilityMultimediaDD;
+ }
+ else if(!capCaseValue.Compare(_L("readdevicedata" )))
+ {
+ aCapabilityValue=ECapabilityReadDeviceData;
+ }
+ else if(!capCaseValue.Compare(_L("writedevicedata" )))
+ {
+ aCapabilityValue=ECapabilityWriteDeviceData;
+ }
+ else if(!capCaseValue.Compare(_L("drm" )))
+ {
+ aCapabilityValue=ECapabilityDRM;
+ }
+ else if(!capCaseValue.Compare(_L("trustedui" )))
+ {
+ aCapabilityValue=ECapabilityTrustedUI;
+ }
+ else if(!capCaseValue.Compare(_L("protserv" )))
+ {
+ aCapabilityValue=ECapabilityProtServ;
+ }
+ else if(!capCaseValue.Compare(_L("diskadmin" )))
+ {
+ aCapabilityValue=ECapabilityDiskAdmin;
+ }
+ else if(!capCaseValue.Compare(_L("networkcontrol" )))
+ {
+ aCapabilityValue=ECapabilityNetworkControl;
+ }
+ else if(!capCaseValue.Compare(_L("allfiles" )))
+ {
+ aCapabilityValue=ECapabilityAllFiles;
+ }
+ else if(!capCaseValue.Compare(_L("swevent" )))
+ {
+ aCapabilityValue=ECapabilitySwEvent;
+ }
+ else if(!capCaseValue.Compare(_L("networkservices" )))
+ {
+ aCapabilityValue=ECapabilityNetworkServices;
+ }
+ else if(!capCaseValue.Compare(_L("localservices" )))
+ {
+ aCapabilityValue=ECapabilityLocalServices;
+ }
+ else if(!capCaseValue.Compare(_L("readuserdata" )))
+ {
+ aCapabilityValue=ECapabilityReadUserData;
+ }
+ else if(!capCaseValue.Compare(_L("writeuserdata")))
+ {
+ aCapabilityValue=ECapabilityWriteUserData;
+ }
+ else if(!capCaseValue.Compare(_L("location")))
+ {
+ aCapabilityValue=ECapabilityLocation;
+ }
+ else if(!capCaseValue.Compare(_L("none")))
+ {
+ aCapabilityValue=ECapability_None;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Unrecognised capability %S, will be rejected"), &capCaseValue);
+ ret=KErrNotFound;
+ }
+
+ return ret;
+ }
+
+
+/**
+ Verifies the given time is nearly equal to current UTC time.
+ @param aTime - Time needs to be verified
+ @return TBool - Returns ETrue if aTime is nearly equal to current UTC
+ time, otherwise EFalse
+ @leave - None
+*/
+EXPORT_C TBool CTestStepSmokeTest::VerifyUTCTime(TTime aTime)
+ {
+ TTime homeTime;
+ TTimeIntervalSeconds utcOffset;
+
+ homeTime.HomeTime();
+ homeTime.SecondsFrom(aTime, utcOffset);
+ INFO_PRINTF2(_L("Calculated utcOffset: %D"), utcOffset.Int());
+ if(Abs(utcOffset.Int()) <= (User::UTCOffset().Int()+120)
+ && Abs(utcOffset.Int()) >= (User::UTCOffset().Int()-120))
+ {
+ return ETrue;
+ }
+ else
+ {
+ return EFalse;
+ }
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/bwins/SmokeTestSecureFSClientU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/bwins/SmokeTestSecureFSClientU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,10 @@
+EXPORTS
+ ?ChangeLocaleName@RTestSecureFSclient@@QAEHABVTDesC16@@@Z @ 1 NONAME ; int RTestSecureFSclient::ChangeLocaleName(class TDesC16 const &)
+ ?CheckForFile@RTestSecureFSclient@@QAEHABVTDesC16@@@Z @ 2 NONAME ; int RTestSecureFSclient::CheckForFile(class TDesC16 const &)
+ ?Connect@RTestSecureFSclient@@QAEHXZ @ 3 NONAME ; int RTestSecureFSclient::Connect(void)
+ ?CopyFile@RTestSecureFSclient@@QAEHABVTDesC16@@0@Z @ 4 NONAME ; int RTestSecureFSclient::CopyFile(class TDesC16 const &, class TDesC16 const &)
+ ?DeleteFileL@RTestSecureFSclient@@QAEHABVTDesC16@@@Z @ 5 NONAME ; int RTestSecureFSclient::DeleteFileL(class TDesC16 const &)
+ ?KillProcessL@RTestSecureFSclient@@QAEXABVTDesC16@@@Z @ 6 NONAME ; void RTestSecureFSclient::KillProcessL(class TDesC16 const &)
+ ?SetHomeTime@RTestSecureFSclient@@QAEHABVTTime@@@Z @ 7 NONAME ; int RTestSecureFSclient::SetHomeTime(class TTime const &)
+ ?SetUpFbs@RTestSecureFSclient@@QAEXXZ @ 8 NONAME ; void RTestSecureFSclient::SetUpFbs(void)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/bwins/SmokeTest_UtilsU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/bwins/SmokeTest_UtilsU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,23 @@
+EXPORTS
+ ??0CTestProperty@@QAE@AAVCTestStep@@@Z @ 1 NONAME ; CTestProperty::CTestProperty(class CTestStep &)
+ ??0CTestStepSmokeTest@@IAE@XZ @ 2 NONAME ; CTestStepSmokeTest::CTestStepSmokeTest(void)
+ ??1CTestActive@@UAE@XZ @ 3 NONAME ; CTestActive::~CTestActive(void)
+ ??1CTestProperty@@UAE@XZ @ 4 NONAME ; CTestProperty::~CTestProperty(void)
+ ??1CTestStepSmokeTest@@UAE@XZ @ 5 NONAME ; CTestStepSmokeTest::~CTestStepSmokeTest(void)
+ ??1CTestTimeOutTimer@@UAE@XZ @ 6 NONAME ; CTestTimeOutTimer::~CTestTimeOutTimer(void)
+ ?Activate@CTestActive@@QAEXXZ @ 7 NONAME ; void CTestActive::Activate(void)
+ ?GetCapability@CTestStepSmokeTest@@IAEHVTPtrC16@@AAW4TCapability@@@Z @ 8 NONAME ; int CTestStepSmokeTest::GetCapability(class TPtrC16, enum TCapability &)
+ ?GetPropertyL@CTestProperty@@QAEHVTUid@@HAAH@Z @ 9 NONAME ; int CTestProperty::GetPropertyL(class TUid, int, int &)
+ ?GetPropertyL@CTestProperty@@QAEHVTUid@@HAAVTDes16@@@Z @ 10 NONAME ; int CTestProperty::GetPropertyL(class TUid, int, class TDes16 &)
+ ?GetPropertyL@CTestProperty@@QAEHVTUid@@HAAVTDes8@@@Z @ 11 NONAME ; int CTestProperty::GetPropertyL(class TUid, int, class TDes8 &)
+ ?NewL@CTestActive@@SAPAV1@AAVMTestActiveCallback@@H@Z @ 12 NONAME ; class CTestActive * CTestActive::NewL(class MTestActiveCallback &, int)
+ ?NewL@CTestTimeOutTimer@@SAPAV1@AAVMTestTimeOutTimerCallback@@H@Z @ 13 NONAME ; class CTestTimeOutTimer * CTestTimeOutTimer::NewL(class MTestTimeOutTimerCallback &, int)
+ ?NewLC@CTestActive@@SAPAV1@AAVMTestActiveCallback@@H@Z @ 14 NONAME ; class CTestActive * CTestActive::NewLC(class MTestActiveCallback &, int)
+ ?NewLC@CTestTimeOutTimer@@SAPAV1@AAVMTestTimeOutTimerCallback@@H@Z @ 15 NONAME ; class CTestTimeOutTimer * CTestTimeOutTimer::NewLC(class MTestTimeOutTimerCallback &, int)
+ ?SetPropertyL@CTestProperty@@QAEHVTUid@@HABVTDesC16@@@Z @ 16 NONAME ; int CTestProperty::SetPropertyL(class TUid, int, class TDesC16 const &)
+ ?SetPropertyL@CTestProperty@@QAEHVTUid@@HABVTDesC8@@@Z @ 17 NONAME ; int CTestProperty::SetPropertyL(class TUid, int, class TDesC8 const &)
+ ?SetPropertyL@CTestProperty@@QAEHVTUid@@HH@Z @ 18 NONAME ; int CTestProperty::SetPropertyL(class TUid, int, int)
+ ?VerifyUTCTime@CTestStepSmokeTest@@IAEHVTTime@@@Z @ 19 NONAME ; int CTestStepSmokeTest::VerifyUTCTime(class TTime)
+ ?doTestStepPostambleL@CTestStepSmokeTest@@UAE?AW4TVerdict@@XZ @ 20 NONAME ; enum TVerdict CTestStepSmokeTest::doTestStepPostambleL(void)
+ ?doTestStepPreambleL@CTestStepSmokeTest@@UAE?AW4TVerdict@@XZ @ 21 NONAME ; enum TVerdict CTestStepSmokeTest::doTestStepPreambleL(void)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/eabi/SmokeTestSecureFSclientU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/eabi/SmokeTestSecureFSclientU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,10 @@
+EXPORTS
+ _ZN19RTestSecureFSclient11DeleteFileLERK7TDesC16 @ 1 NONAME
+ _ZN19RTestSecureFSclient11SetHomeTimeERK5TTime @ 2 NONAME
+ _ZN19RTestSecureFSclient12CheckForFileERK7TDesC16 @ 3 NONAME
+ _ZN19RTestSecureFSclient12KillProcessLERK7TDesC16 @ 4 NONAME
+ _ZN19RTestSecureFSclient16ChangeLocaleNameERK7TDesC16 @ 5 NONAME
+ _ZN19RTestSecureFSclient7ConnectEv @ 6 NONAME
+ _ZN19RTestSecureFSclient8CopyFileERK7TDesC16S2_ @ 7 NONAME
+ _ZN19RTestSecureFSclient8SetUpFbsEv @ 8 NONAME
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/eabi/SmokeTest_UtilsU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/eabi/SmokeTest_UtilsU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,40 @@
+EXPORTS
+ _ZN11CTestActive4NewLER19MTestActiveCallbacki @ 1 NONAME
+ _ZN11CTestActive5NewLCER19MTestActiveCallbacki @ 2 NONAME
+ _ZN11CTestActive8ActivateEv @ 3 NONAME
+ _ZN11CTestActiveD0Ev @ 4 NONAME
+ _ZN11CTestActiveD1Ev @ 5 NONAME
+ _ZN11CTestActiveD2Ev @ 6 NONAME
+ _ZN13CTestProperty12GetPropertyLE4TUidiR5TDes8 @ 7 NONAME
+ _ZN13CTestProperty12GetPropertyLE4TUidiR6TDes16 @ 8 NONAME
+ _ZN13CTestProperty12GetPropertyLE4TUidiRi @ 9 NONAME
+ _ZN13CTestProperty12SetPropertyLE4TUidiRK6TDesC8 @ 10 NONAME
+ _ZN13CTestProperty12SetPropertyLE4TUidiRK7TDesC16 @ 11 NONAME
+ _ZN13CTestProperty12SetPropertyLE4TUidii @ 12 NONAME
+ _ZN13CTestPropertyC1ER9CTestStep @ 13 NONAME
+ _ZN13CTestPropertyC2ER9CTestStep @ 14 NONAME
+ _ZN13CTestPropertyD0Ev @ 15 NONAME
+ _ZN13CTestPropertyD1Ev @ 16 NONAME
+ _ZN13CTestPropertyD2Ev @ 17 NONAME
+ _ZN18CTestStepSmokeTest13GetCapabilityE7TPtrC16R11TCapability @ 18 NONAME
+ _ZN18CTestStepSmokeTest13VerifyUTCTimeE5TTime @ 19 NONAME
+ _ZN18CTestStepSmokeTest19doTestStepPreambleLEv @ 20 NONAME
+ _ZN18CTestStepSmokeTest20doTestStepPostambleLEv @ 21 NONAME
+ _ZN18CTestStepSmokeTestC2Ev @ 22 NONAME
+ _ZN18CTestStepSmokeTestD0Ev @ 23 NONAME
+ _ZN18CTestStepSmokeTestD1Ev @ 24 NONAME
+ _ZN18CTestStepSmokeTestD2Ev @ 25 NONAME
+ _ZN17CTestTimeOutTimer4NewLER25MTestTimeOutTimerCallbacki @ 26 NONAME
+ _ZN17CTestTimeOutTimer5NewLCER25MTestTimeOutTimerCallbacki @ 27 NONAME
+ _ZN17CTestTimeOutTimerD0Ev @ 28 NONAME
+ _ZN17CTestTimeOutTimerD1Ev @ 29 NONAME
+ _ZN17CTestTimeOutTimerD2Ev @ 30 NONAME
+ _ZTI11CTestActive @ 31 NONAME ; ##
+ _ZTI13CTestProperty @ 32 NONAME ; ##
+ _ZTI18CTestStepSmokeTest @ 33 NONAME ; ##
+ _ZTI17CTestTimeOutTimer @ 34 NONAME ; ##
+ _ZTV11CTestActive @ 35 NONAME ; ##
+ _ZTV13CTestProperty @ 36 NONAME ; ##
+ _ZTV18CTestStepSmokeTest @ 37 NONAME ; ##
+ _ZTV17CTestTimeOutTimer @ 38 NONAME ; ##
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/group/SmokeTestSecureFSclient.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/group/SmokeTestSecureFSclient.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,32 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestSecureFSclient.mmp
+//
+//
+
+TARGET SmokeTestSecureFSclient.dll
+TARGETTYPE dll
+CAPABILITY All
+
+UID 0x1000008D 0x101FF347
+VENDORID 0x70000001
+
+USERINCLUDE ..\Inc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\test
+
+SOURCEPATH ..\src
+SOURCE SmokeTestSecureFSclient.cpp
+
+LIBRARY euser.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/group/SmokeTestSecureFSserver.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/group/SmokeTestSecureFSserver.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,36 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestSecureFSserver.mmp
+//
+//
+
+
+UID 0x1000008D 0x101FF346
+VENDORID 0x70000001
+
+TARGET SmokeTestSecureFSserver.exe
+TARGETTYPE EXE
+CAPABILITY ALL
+
+USERINCLUDE ..\Inc
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\test
+
+SOURCEPATH ..\SRC
+SOURCE SmokeTestSecureFSserver.cpp
+
+SOURCEPATH .
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/group/SmokeTest_Utils.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/group/SmokeTest_Utils.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,50 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Using relative paths for sourcepath and user includes
+//
+//
+
+#include "..\..\Group\Configuration.cfg"
+
+TARGET SmokeTest_Utils.dll
+TARGETTYPE dll
+UID 0x1000008D 0x101FF341
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY All -TCB
+
+SOURCEPATH ..\Src
+
+SOURCE SmokeTestTimeOutTimer.cpp
+SOURCE SmokeTestActive.cpp
+SOURCE TestStepSmokeTest.cpp
+SOURCE SmokeTestProperty.cpp
+
+USERINCLUDE ..\Inc
+USERINCLUDE ..\..\Group
+
+SYSTEMINCLUDE \epoc32\include
+SYSTEMINCLUDE \epoc32\include\test
+
+LIBRARY euser.lib
+LIBRARY efsrv.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
+LIBRARY TestConfigFileParser.lib
+
+// We're quite heavy on the stack... 4k in WinS isn't enough...
+EPOCSTACKSIZE 0x6000
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/Utils/group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/Utils/group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,31 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Integration test system build description file for self test suite
+//
+//
+
+PRJ_TESTEXPORTS
+// For Emulator
+../Inc/SmokeTestTimeOutTimer.h /epoc32/include/test/smoketesttimeouttimer.h
+../Inc/SmokeTestActive.h /epoc32/include/test/smoketestactive.h
+../Inc/TestStepSmokeTest.h /epoc32/include/test/teststepsmoketest.h
+../Inc/SmokeTestProperty.h /epoc32/include/test/smoketestproperty.h
+../Inc/SmokeTestSecureFSclientserver.h /epoc32/include/test/smoketestsecurefsclientserver.h
+../Inc/SmokeTestSecureFSclient.h /epoc32/include/test/smoketestsecurefsclient.h
+../Inc/SmokeTestSecureFSserver.h /epoc32/include/test/smoketestsecurefsserver.h
+
+PRJ_TESTMMPFILES
+SmokeTestSecureFSclient.mmp
+SmokeTestSecureFSserver.mmp
+SmokeTest_Utils.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Group/Smoketest_Agenda.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Group/Smoketest_Agenda.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,51 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+//
+
+
+TARGET Smoketest_Agenda_Server.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7771
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+//CAPABILITY WriteUserData ReadUserData
+CAPABILITY All -TCB
+
+
+SOURCEPATH ..\Src
+
+SOURCE TestAgendaServer.cpp
+SOURCE TestAgendaAddAppt.cpp
+SOURCE TestAgendaBase.cpp
+SOURCE TestAgendaCreateDB.cpp
+SOURCE TestAgendaServerLaunchProgress.cpp
+
+USERINCLUDE ..\Inc ..\..\Group
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\Test
+
+LIBRARY apparc.lib
+LIBRARY euser.lib
+LIBRARY calinterimapi.lib
+LIBRARY etext.lib
+LIBRARY estor.lib
+LIBRARY efsrv.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,25 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For Agenda smoketest
+//
+//
+
+PRJ_TESTEXPORTS
+
+../Scripts/setup_Smoketest_Agenda.script z:/smoketest/setup_smoketest_agenda.script
+../Scripts/Smoketest_Agenda.script z:/smoketest/smoketest_agenda.script
+../TestData/Smoketest_Agenda.ini z:/smoketest/smoketest_agenda.ini
+
+PRJ_TESTMMPFILES
+Smoketest_Agenda.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Inc/TestAgendaAddAppt.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Inc/TestAgendaAddAppt.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,37 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestAgendaCreateDB.h
+// This contains CTestAgendaAddAppt
+//
+//
+
+#ifndef TEST_AGENDA_ADD_APPT_H
+#define TEST_AGENDA_ADD_APPT_H
+
+#include "TestAgendaBase.h"
+
+class CTestAgendaAddAppt : public CTestAgendaBase
+{
+public:
+ CTestAgendaAddAppt();
+ virtual ~CTestAgendaAddAppt();
+
+public:
+ virtual enum TVerdict doTestStepL( void );
+
+private:
+ void AddEntriesL( void );
+};
+
+#endif /* TEST_AGENDA_ADD_APPT_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Inc/TestAgendaBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Inc/TestAgendaBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,91 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaBase which is the base class for all
+// the Psd Agx suite test steps
+//
+//
+
+#ifndef TEST_AGENDA_BASE_H
+#define TEST_AGENDA_BASE_H
+
+#include
+#include
+#include
+
+
+
+//forward declarations
+class CCalSession;
+
+#define KMaxDateStringLength 30
+#define KMaxTimeStringLength 30
+
+#define KMaxDateStringLength 30
+#define KMaxTimeStringLength 30
+
+class CTestAgendaPicture :public MPictureFactory
+/**
+* Picture class for the agenda model
+*/
+{
+/**************************************************************
+* An object of this class is used for setting the picture factory
+* of an Agenda model, although our code does not use any of the
+* functionality provided by this class, it is created with empty
+* implementation and set to satisfy the compiler as it uses
+* an assert macro to check if this object is set before saving
+* the agenda model entries into a file
+*************************************************************/
+
+public:
+ CTestAgendaPicture();
+ virtual ~CTestAgendaPicture();
+ virtual void NewPictureL(TPictureHeader& aHeader,const CStreamStore& aDeferredPictureStore)const;
+};
+
+
+class CTestAgendaBase : public CTestStep
+{
+public:
+ CTestAgendaBase();
+ ~CTestAgendaBase();
+
+ virtual enum TVerdict doTestStepPreambleL();
+ virtual enum TVerdict doTestStepPostambleL();
+
+ CCalSession& CTestAgendaBase::CalSession();
+ void SetCalEntryView(CCalEntryView* calEntryViewPtr);
+
+protected:
+ void CreateDatabaseL();
+ void OpenDatabaseL();
+ void CleanupDatabase();
+
+private:
+ CActiveScheduler* iSchedular;
+ TBool iEnteredBlocked;
+ TBool iExitedBlocked;
+
+protected:
+ RFs iFs;
+ TBool iSessionConnected;
+ CCalEntryView* iCalEntryViewBase;
+ /**
+ To store the models entries
+ */
+ CFileStore* iStore;
+ CCalSession* iCalSession;
+};
+
+#endif /* TEST_AGENDA_BASE_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Inc/TestAgendaCreateDB.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Inc/TestAgendaCreateDB.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,34 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaCreateDB
+//
+//
+
+#ifndef TEST_AGENDA_CREATE_DB_H
+#define TEST_AGENDA_CREATE_DB_H
+
+#include "TestAgendaBase.h"
+
+class CTestAgendaCreateDB : public CTestAgendaBase
+{
+public:
+ CTestAgendaCreateDB();
+ virtual ~CTestAgendaCreateDB();
+
+public:
+ virtual enum TVerdict doTestStepL( void );
+
+};
+
+#endif /* TEST_AGENDA_CREATE_DB_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Inc/TestAgendaServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Inc/TestAgendaServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaServer
+//
+//
+
+#ifndef TEST_AGENDA_SERVER_H
+#define TEST_AGENDA_SERVER_H
+
+#include
+
+class CTestAgendaServer : public CTestServer
+{
+public:
+ static CTestAgendaServer* NewL();
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+
+private:
+ void ConstructL();
+};
+
+#endif /* TEST_AGENDA_SERVER_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Inc/TestAgendaServerLaunchProgress.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Inc/TestAgendaServerLaunchProgress.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,75 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaServerLaunchProgress
+//
+//
+
+#ifndef TEST_AGENDA_SERVER_LAUNCH_PROGRESS_H
+#define TEST_AGENDA_SERVER_LAUNCH_PROGRESS_H
+
+#include "TestAgendabase.h"
+#include
+#include
+
+
+//forward declaration
+//class CTestAgendaBase;
+class CCalEntryView;
+
+
+class CTestAgendaServerLaunchProgress : public CActive, private MCalProgressCallBack
+/**
+* This class provides an implementationfor the pure virtual functions
+* declared in MAgnProgressCallBack. The framework makes calls to the
+* functions indidcating the status of the operation.
+*/
+{
+public:
+ static CTestAgendaServerLaunchProgress* NewL(CTestAgendaBase* aAgendaBase);
+ virtual ~CTestAgendaServerLaunchProgress();
+ void Start();
+
+ //from CActive
+ virtual void RunL();
+ virtual void DoCancel();
+
+private:
+ CTestAgendaServerLaunchProgress(CTestAgendaBase* aAgendaBase);
+ void ConstructL();
+
+ //from MAgnProgressCallBack
+ virtual void Completed(TInt aError = KErrNone);
+ virtual void Progress(TInt aPercentageCompleted);
+ virtual TBool NotifyProgress();
+
+private:
+ /**
+ pointer to the CTestAgendaBase object.
+ */
+ CTestAgendaBase* iAgendaBase;
+ CCalEntryView* iCalEntryView;
+
+ /**
+ file in which the entries are present
+ */
+ TPtrC iFileName;
+
+ /**
+ file server session
+ */
+ RFs iFs;
+
+};
+
+#endif TEST_AGENDA_SERVER_LAUNCH_PROGRESS_H
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/ReadMe.doc
Binary file common/tools/ats/smoketest/agenda/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Scripts/Smoketest_Agenda.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Scripts/Smoketest_Agenda.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,26 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run Agenda smoketest
+//
+LOAD_SUITE Smoketest_Agenda_Server
+//
+START_TESTCASE 8981
+RUN_TEST_STEP 100 Smoketest_Agenda_Server CreateDB c:\Smoketest\Smoketest_Agenda.ini 18920_CreateDB
+END_TESTCASE 8981
+START_TESTCASE 8979
+RUN_TEST_STEP 1000 Smoketest_Agenda_Server AddAppt c:\Smoketest\Smoketest_Agenda.ini 24560_AddAppts
+END_TESTCASE 8979
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Scripts/setup_Smoketest_Agenda.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Scripts/setup_Smoketest_Agenda.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,22 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+RUN_UTILS MkDir c:\Smoketest\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_agenda.ini c:\smoketest\smoketest_agenda.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_agenda.ini
+
+// RUN_SCRIPT Smoketest_Agenda.script
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/TestAgendaAddAppt.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/TestAgendaAddAppt.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,191 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaAddAppt
+//
+//
+
+#include
+#include
+#include
+
+
+#include "TestAgendaAddAppt.h"
+
+_LIT(KCount, "count");
+_LIT(KYear, "year%d");
+_LIT(KMonth, "month%d");
+_LIT(KDay, "day%d");
+_LIT(KHour, "hour%d");
+_LIT(KMinute, "min%d");
+_LIT(KDuration, "duration%d");
+_LIT(KMessage, "message%d");
+_LIT(KAlarm, "alarm%d");
+_LIT(KAlarmSound, "alarmsound%d");
+
+// constructor
+CTestAgendaAddAppt::CTestAgendaAddAppt()
+ {
+ SetTestStepName(_L("AddAppt"));
+ }
+
+// destructor
+CTestAgendaAddAppt::~CTestAgendaAddAppt()
+ {
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAgendaAddAppt::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> ADDING APPOINTMENT ENTRIES"));
+
+ OpenDatabaseL();
+ if ( TestStepResult() == EPass )
+ {
+ TRAPD(r, AddEntriesL());
+ if (r!=KErrNone)
+ SetTestStepResult(EFail);
+ }
+ CleanupDatabase();
+
+ // test steps return a result
+ return TestStepResult();
+ }
+
+// Destroy the RPointerArray
+void DestroyRPointerArray(TAny* aPtr)
+ {
+ RPointerArray* self = static_cast*> (aPtr);
+ self->ResetAndDestroy();
+ }
+
+
+void CTestAgendaAddAppt::AddEntriesL( void )
+ {
+ TInt count=1;
+ if ( !GetIntFromConfig(ConfigSection(), KCount, count) )
+ count=1;
+
+ TBuf tempStore;
+ TInt year;
+ TInt month;
+ TInt day;
+ TInt hour;
+ TInt minute;
+ TInt duration;
+ TInt alarm;
+ TPtrC ptrAlarmSound;
+ TPtrC ptrMessage;
+ TBuf dateString;
+ _LIT(KDateString,"%*E%*D%X%*N%*Y %1 %2 '%3");
+
+ RPointerArray array;
+ CleanupStack::PushL(TCleanupItem(DestroyRPointerArray, &array));
+
+ for (TInt entry=0; entryDes();
+ uidP.Append(count);
+
+ CCalEntry* calEntry = CCalEntry::NewL(CCalEntry::EAppt, uid, CCalEntry::EMethodNone, 0);
+
+ CleanupStack::Pop(); //uid
+ CleanupStack::PushL(calEntry);
+
+ TCalTime calStartTime, calEndTime;
+
+ calStartTime.SetTimeLocalL(startTime);
+ calEndTime.SetTimeLocalL(endTime);
+
+ calEntry->SetStartAndEndTimeL(calStartTime, calEndTime);
+
+ tempStore.Format(KAlarm(), entry);
+ if ( GetIntFromConfig(ConfigSection(), tempStore, alarm) )
+ {
+ TTimeIntervalMinutes currentTime((hour*60) + minute);
+ TTimeIntervalMinutes alarmTime(currentTime.Int());
+
+ CCalAlarm* calAlarm = CCalAlarm::NewL();
+ CleanupStack::PushL(calAlarm);
+
+ calAlarm->SetTimeOffset(alarmTime);
+
+ tempStore.Format(KAlarmSound(), entry);
+ if ( GetStringFromConfig(ConfigSection(), tempStore, ptrAlarmSound) )
+ calAlarm->SetAlarmSoundNameL(ptrAlarmSound);
+ else
+ calAlarm->SetAlarmSoundNameL(_L("Bells"));
+
+ calEntry->SetAlarmL(calAlarm);
+ CleanupStack::PopAndDestroy(); //calAlarm
+ }
+ //Store in the array
+ array.AppendL(calEntry);
+
+ CleanupStack::Pop(); //calEntry
+ }
+ INFO_PRINTF1(_L("About to store appointments now"));
+ TInt success(0);
+ TRAPD(storeError, iCalEntryViewBase->StoreL(array, success));
+ INFO_PRINTF2(_L("Store result is %d"), storeError);
+ if (success != count && storeError == KErrNone)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&array);
+
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/TestAgendaBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/TestAgendaBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,223 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaCase which is the base class for all the Agenda TestCase DLL
+//
+//
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include "TestAgendabase.h"
+#include "TestAgendaServerLaunchProgress.h"
+
+#include
+
+
+
+_LIT(KDef, "default");
+_LIT(KFileName, "filenameSecure");
+
+void CTestAgendaPicture::NewPictureL(TPictureHeader& /*aHeader*/,const CStreamStore& /*aDeferredPictureStore*/)const
+/**
+Creates a new Picture object for use by agenda model, currently the implementation is empty as our code
+does not use any the functionality.
+*/
+ {
+ //empty implementation
+ }
+
+CTestAgendaPicture::CTestAgendaPicture()
+/**
+constructor, currently the implementation is empty
+*/
+ {
+ //empty implementation
+ }
+
+CTestAgendaPicture::~CTestAgendaPicture()
+/**
+destructor, currently the implementation is empty
+*/
+ {
+ //empty implementation
+ }
+
+CTestAgendaBase::CTestAgendaBase()
+: CTestStep()
+, iSchedular(NULL)
+, iEnteredBlocked(EFalse)
+, iExitedBlocked(EFalse)
+, iSessionConnected(EFalse)
+, iCalEntryViewBase(NULL)
+, iStore(NULL)
+, iCalSession(NULL)
+ {
+ }
+
+// destructor
+CTestAgendaBase::~CTestAgendaBase()
+ {
+ delete iSchedular;
+ iSchedular=NULL;
+
+ }
+
+enum TVerdict CTestAgendaBase::doTestStepPreambleL()
+ {
+ TVerdict ret = CTestStep::doTestStepPreambleL();
+
+ INFO_PRINTF1(_L("doTestStepPreambleL"));
+ iSchedular=new (ELeave) CActiveScheduler();
+ CActiveScheduler::Install(iSchedular);
+
+ iCalSession = CCalSession::NewL();
+
+ return ret;
+ }
+
+enum TVerdict CTestAgendaBase::doTestStepPostambleL()
+ {
+
+ delete iCalEntryViewBase;
+ iCalEntryViewBase=NULL;
+
+ delete iSchedular;
+ iSchedular=NULL;
+ CActiveScheduler::Install(NULL);
+
+
+ return CTestStep::doTestStepPostambleL();
+ }
+
+// Create a new database
+void CTestAgendaBase::CreateDatabaseL( void )
+ {
+ TPtrC ptrFileName;
+ TBool returnValue =GetStringFromConfig(ConfigSection(), KFileName, ptrFileName);
+ if ( !returnValue )
+ returnValue=GetStringFromConfig(KDef, KFileName, ptrFileName);
+
+ if (returnValue)
+ {
+ INFO_PRINTF2(_L("filename = %S"), &ptrFileName);
+ }
+ else
+ {
+ User::Leave(KErrNotFound);
+ }
+
+ // Connect file server
+ User::LeaveIfError(iFs.Connect());
+ iSessionConnected=ETrue;
+
+ TInt r;
+ if (iCalSession)
+ {
+ TRAP(r, iCalSession->CreateCalFileL(ptrFileName));
+ }
+
+ if (r == KErrAlreadyExists)
+ {
+ TRAP_IGNORE(iCalSession->DeleteCalFileL(ptrFileName));
+ TRAP(r, iCalSession->CreateCalFileL(ptrFileName));
+ }
+
+
+ if (r!=KErrNone && r!=KErrAlreadyExists)
+ {
+ ERR_PRINTF2(_L("Creating Agenda file failed with error %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+
+void CTestAgendaBase::OpenDatabaseL( void )
+ {
+ TPtrC ptrFileName;
+ TBool returnValue =GetStringFromConfig(ConfigSection(), KFileName, ptrFileName);
+ if ( !returnValue )
+ returnValue=GetStringFromConfig(KDef, KFileName, ptrFileName);
+
+
+ if (returnValue)
+ {
+ INFO_PRINTF2(_L("filename = %S"), &ptrFileName);
+ }
+ else
+ {
+ User::Leave(KErrNotFound);
+ }
+
+ // Connect file server
+ User::LeaveIfError(iFs.Connect());
+ iSessionConnected=ETrue;
+
+
+ if (iCalSession)
+ {
+ iCalSession->OpenL(ptrFileName);
+ }
+
+ //open the database by creating an object of CTestAgendaServerLaunchProgress
+ CTestAgendaServerLaunchProgress* progress = CTestAgendaServerLaunchProgress::NewL(this);
+ CleanupStack::PushL(progress);
+
+ //kick start the launching process
+ progress->Start();
+ CActiveScheduler::Start();
+ CleanupStack::PopAndDestroy(progress);
+
+ }
+
+void CTestAgendaBase::CleanupDatabase( void )
+ {
+ if (iCalEntryViewBase)
+ {
+ delete iCalEntryViewBase;
+ iCalEntryViewBase = NULL;
+ }
+
+/* if (iCalSession)
+ {
+ delete iCalSession;
+ iCalSession=NULL;
+ }*/
+
+
+ if (iSessionConnected)
+ {
+ iFs.Close();
+ iSessionConnected=EFalse;
+ }
+ }
+
+void CTestAgendaBase::SetCalEntryView(CCalEntryView* calEntryViewPtr)
+ {
+ iCalEntryViewBase = calEntryViewPtr;
+ }
+
+CCalSession& CTestAgendaBase::CalSession()
+ {
+ if (iCalSession)
+ {
+ return *iCalSession;
+ }
+ else
+ {
+ iCalSession = CCalSession::NewL();
+
+ return *iCalSession;
+ }
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/TestAgendaCreateDB.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/TestAgendaCreateDB.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,43 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaCreateDB
+//
+//
+
+#include
+
+#include "TestAgendaCreateDB.h"
+
+// constructor
+CTestAgendaCreateDB::CTestAgendaCreateDB()
+ {
+ SetTestStepName(_L("CreateDB"));
+ }
+
+// destructor
+CTestAgendaCreateDB::~CTestAgendaCreateDB()
+ {
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAgendaCreateDB::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> CREATING OUR AGENDA DATABASE"));
+
+ CreateDatabaseL();
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/TestAgendaServer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/TestAgendaServer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,107 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This main DLL entry point for the Smoketest_Agenda.dll
+//
+//
+
+
+// EPOC includes
+#include
+
+#include "TestAgendaServer.h"
+#include "TestAgendaAddAppt.h"
+#include "TestAgendaCreateDB.h"
+
+
+_LIT(KServerName,"Smoketest_Agenda_Server");
+
+CTestAgendaServer* CTestAgendaServer::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+ {
+ CTestAgendaServer* server = new (ELeave) CTestAgendaServer();
+ CleanupStack::PushL(server);
+ // CServer base class call
+ server->StartL(KServerName);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+ {
+#if (defined __DATA_CAGING__)
+ RProcess().DataCaging(RProcess::EDataCagingOn);
+ RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+ CActiveScheduler* sched=NULL;
+ sched=new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(sched);
+ CTestAgendaServer* server = NULL;
+ // Create the CTestServer derived server
+ TRAPD(err,server = CTestAgendaServer::NewL());
+ if(!err)
+ {
+ // Sync with the client and enter the active scheduler
+ RProcess::Rendezvous(KErrNone);
+ sched->Start();
+ }
+ delete server;
+ delete sched;
+ }
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return err;
+ }
+
+
+CTestStep* CTestAgendaServer::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+ {
+ CTestStep* testStep = NULL;
+
+ if(aStepName == _L("AddAppt"))
+ testStep = new CTestAgendaAddAppt();
+ else if(aStepName == _L("CreateDB"))
+ testStep = new CTestAgendaCreateDB();
+ return testStep;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/TestAgendaServerLaunchProgress.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/TestAgendaServerLaunchProgress.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,119 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAgendaServerLaunchProgress
+//
+//
+
+#include "TestAgendaServerLaunchProgress.h"
+#include
+
+CTestAgendaServerLaunchProgress* CTestAgendaServerLaunchProgress::NewL(CTestAgendaBase* aAgendaBase)
+/**
+ * @return - Instance of the agenda progress callback
+ */
+ {
+ CTestAgendaServerLaunchProgress* progress = new (ELeave) CTestAgendaServerLaunchProgress(aAgendaBase);
+ CleanupStack::PushL(progress);
+ progress->ConstructL();
+ CleanupStack::Pop(progress);
+ return progress;
+ }
+
+CTestAgendaServerLaunchProgress::CTestAgendaServerLaunchProgress(CTestAgendaBase* aAgendaBase)
+: CActive(EPriorityStandard)
+, iAgendaBase(aAgendaBase)
+/**
+constructor
+*/
+ {
+ }
+
+void CTestAgendaServerLaunchProgress::ConstructL()
+/**
+constructor
+*/
+ {
+ //adding this active object into an active scheduler
+ CActiveScheduler::Add(this);
+ }
+
+CTestAgendaServerLaunchProgress::~CTestAgendaServerLaunchProgress()
+/**
+destructor
+*/
+ {
+ }
+
+void CTestAgendaServerLaunchProgress::Completed(TInt aError)
+/**
+callback function invoked after the file is completely loaded.
+@param TInt aError
+*/
+ {
+ if(aError != KErrNone)
+ {
+ iAgendaBase ->INFO_PRINTF2(_L("Opening the agenda database file failed with error %D"),aError);
+ iAgendaBase ->SetTestStepResult(EFail);
+ }
+ else
+ {
+ iAgendaBase ->INFO_PRINTF1(_L("Opening the Agenda database succesful"));
+ }
+ CActiveScheduler::Stop();
+ }
+
+void CTestAgendaServerLaunchProgress::Progress(TInt aPercentageCompleted)
+/**
+callback function invoked to indicate the progress
+@param aPercentageCompleted percent file loaded
+*/
+ {
+ //log the progress percentage of saving the entries
+ iAgendaBase ->INFO_PRINTF2(_L("%D%% completed opening the agenda database"),aPercentageCompleted);
+ }
+
+TBool CTestAgendaServerLaunchProgress::NotifyProgress()
+ {
+ return ETrue;
+ }
+
+void CTestAgendaServerLaunchProgress::RunL()
+/**
+RunL from CActive class, opens the agenda database file, and builds the indices
+@leave system wide error code
+*/
+ {
+ CCalEntryView* calEntryViewPtr = CCalEntryView::NewL(iAgendaBase->CalSession(), *this);
+ iAgendaBase->SetCalEntryView(calEntryViewPtr);
+ }
+
+void CTestAgendaServerLaunchProgress::DoCancel()
+/**
+DoCancel of the active object
+*/
+ {
+ iAgendaBase ->INFO_PRINTF1(_L("Inside do cancel of the active object"));
+ }
+
+
+void CTestAgendaServerLaunchProgress::Start(void)
+/**
+starts the saving process
+*/
+ {
+ TRequestStatus *threadStatus=&iStatus;
+ User::RequestComplete(threadStatus,KErrNone);
+ SetActive();
+ }
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/Src/sm_agenda.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/Src/sm_agenda.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,1 @@
+[Files MRU]
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/TestData/Smoketest_Agenda.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/TestData/Smoketest_Agenda.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,35 @@
+[default]
+filename =c:\smoketest\Smoketest_Agenda
+filenameSecure =c:Smoketest_Agenda
+
+[18920_CreateDB]
+
+[24560_AddAppts]
+count =3
+
+year1 =2002
+month1 =9
+day1 =15
+hour1 =9
+min1 =0
+duration1 =15
+message1 =make a cup of tea
+
+year2 =2002
+month2 =9
+day2 =16
+hour2 =14
+min2 =0
+duration2 =60
+message2 =football
+alarm2 =15
+
+year3 =2002
+month3 =9
+day3 =15
+hour3 =12
+min3 =0
+duration3 =30
+message3 =have lunch
+alarm3 =15
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/agenda/bwins/SMOKETEST_AGENDA_SERVERU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/agenda/bwins/SMOKETEST_AGENDA_SERVERU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,3 @@
+EXPORTS
+ ?NewServer@@YAHXZ @ 1 NONAME ; int __cdecl NewServer(void)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,24 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For Agenda smoketest
+//
+//
+
+PRJ_TESTEXPORTS
+..\scripts\setup_smoketest_apploader.script z:\smoketest\setup_smoketest_apploader.script
+..\scripts\smoketest_apploader.script z:\smoketest\smoketest_apploader.script
+..\testdata\smoketest_apploader.ini z:\smoketest\smoketest_apploader.ini
+
+PRJ_TESTMMPFILES
+smoketest_apploader.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Group/smoketest_apploader.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Group/smoketest_apploader.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,53 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+//
+
+
+TARGET smoketest_apploader.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7776
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY All -TCB
+
+
+SOURCEPATH ..\Src
+
+SOURCE TestAppLoaderServer.cpp
+SOURCE TestAppLoaderBase.cpp
+SOURCE TestAppLoaderAppStart.cpp
+SOURCE TestAppLoaderEndTask.cpp
+SOURCE TestAppLoaderKillProcess.cpp
+SOURCE TestAppLoaderTaskRunning.cpp
+
+USERINCLUDE ..\Inc ..\..\Group
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\Test
+
+LIBRARY apparc.lib
+LIBRARY euser.lib
+LIBRARY etext.lib
+LIBRARY estor.lib
+LIBRARY efsrv.lib
+LIBRARY apgrfx.lib
+LIBRARY ws32.lib
+LIBRARY cone.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderAppStart.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderAppStart.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestAppLoaderAppStart.h
+// This contains CTestAppLoaderAppStart
+//
+//
+
+#ifndef TEST_APP_LOADER_APP_START_H
+#define TEST_APP_LOADER_APP_START_H
+
+// User includes
+#include "TestAppLoaderBase.h"
+
+class CTestAppLoaderAppStart : public CTestAppLoaderBase
+ {
+public:
+ CTestAppLoaderAppStart();
+
+ virtual enum TVerdict doTestStepL( void );
+ };
+
+#endif /* TEST_APP_LOADER_APP_START_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,34 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderBase which is the base class for all
+// the Psd Agx suite test steps
+//
+//
+
+#ifndef TEST_APP_LOADER_BASE_H
+#define TEST_APP_LOADER_BASE_H
+
+#include
+
+class CTestAppLoaderBase : public CTestStep
+ {
+public:
+ CTestAppLoaderBase();
+ ~CTestAppLoaderBase();
+
+ virtual enum TVerdict doTestStepPreambleL();
+ virtual enum TVerdict doTestStepPostambleL();
+ };
+
+#endif /* TEST_APP_LOADER_BASE_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderEndTask.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderEndTask.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestAppLoaderEndTask.h
+// This contains CTestAppLoaderEndTask
+//
+//
+
+#ifndef TEST_APP_LOADER_END_TASK_H
+#define TEST_APP_LOADER_END_TASK_H
+
+// User includes
+#include "TestAppLoaderBase.h"
+
+class CTestAppLoaderEndTask : public CTestAppLoaderBase
+ {
+public:
+ CTestAppLoaderEndTask();
+
+ virtual enum TVerdict doTestStepL( void );
+ };
+
+#endif /* TEST_APP_LOADER_END_TASK_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderKillProcess.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderKillProcess.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestAppLoaderKillProcess.h
+// This contains CTestAppLoaderKillProcess
+//
+//
+
+#ifndef TEST_APP_LOADER_KILL_PROCESS_H
+#define TEST_APP_LOADER_KILL_PROCESS_H
+
+// User includes
+#include "TestAppLoaderBase.h"
+
+class CTestAppLoaderKillProcess : public CTestAppLoaderBase
+ {
+public:
+ CTestAppLoaderKillProcess();
+
+ virtual enum TVerdict doTestStepL( void );
+ };
+
+#endif /* TEST_APP_LOADER_KILL_PROCESS_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,35 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderServer
+//
+//
+
+#ifndef TEST_APP_LOADER_SERVER_H
+#define TEST_APP_LOADER_SERVER_H
+
+#include
+
+class CTestAppLoaderServer : public CTestServer
+{
+public:
+ static CTestAppLoaderServer* NewL();
+ ~CTestAppLoaderServer();
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+
+private:
+ CTestAppLoaderServer();
+ void ConstructL();
+};
+
+#endif /* TEST_APP_LOADER_SERVER_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Inc/TestAppLoaderTaskRunning.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Inc/TestAppLoaderTaskRunning.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestAppLoaderEndTask.h
+// This contains CTestAppLoaderTaskRunning
+//
+//
+
+#ifndef TEST_APP_LOADER_TASK_RUNNING_H
+#define TEST_APP_LOADER_TASK_RUNNING_H
+
+// User includes
+#include "TestAppLoaderBase.h"
+
+class CTestAppLoaderTaskRunning : public CTestAppLoaderBase
+ {
+public:
+ CTestAppLoaderTaskRunning();
+
+ virtual enum TVerdict doTestStepL( void );
+ };
+
+#endif /* TEST_APP_LOADER_TASK_RUNNING_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/ReadMe.doc
Binary file common/tools/ats/smoketest/apploader/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderAppStart.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderAppStart.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,74 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderAppStart
+//
+//
+
+// USER includes
+#include "TestAppLoaderAppStart.h"
+
+// EPOC includes
+#include
+#include
+
+/*@{*/
+/// Parameters
+_LIT(KProgram, "program");
+
+/// Error messages
+_LIT(KErrCode, "Error %d");
+_LIT(KErrMissingParameter , "Misssing Parameter %S");
+/*@}*/
+
+// constructor
+CTestAppLoaderAppStart::CTestAppLoaderAppStart()
+: CTestAppLoaderBase()
+ {
+ SetTestStepName(_L("AppStart"));
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAppLoaderAppStart::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> APP START"));
+
+ TPtrC program;
+ if ( !GetStringFromConfig(ConfigSection(), KProgram, program) )
+ {
+ ERR_PRINTF2(KErrMissingParameter, &KProgram());
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ RApaLsSession apaLsSession;
+ User::LeaveIfError(apaLsSession.Connect());
+ CleanupClosePushL(apaLsSession);
+
+ CApaCommandLine* cmdLine=CApaCommandLine::NewLC();
+ cmdLine->SetExecutableNameL(program);
+ cmdLine->SetCommandL(EApaCommandRun);
+
+ TInt err=apaLsSession.StartApp(*cmdLine);
+ if ( err!=KErrNone )
+ {
+ ERR_PRINTF2(KErrCode, err);
+ SetTestStepError(err);
+ }
+ CleanupStack::PopAndDestroy(2, &apaLsSession);
+ }
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,39 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderBase which is the base class for all the AppLoader TestCase DLL
+//
+//
+
+// USER includes
+#include "TestAppLoaderBase.h"
+
+CTestAppLoaderBase::CTestAppLoaderBase()
+ {
+ }
+
+// destructor
+CTestAppLoaderBase::~CTestAppLoaderBase()
+ {
+ }
+
+enum TVerdict CTestAppLoaderBase::doTestStepPreambleL()
+ {
+ TVerdict ret = CTestStep::doTestStepPreambleL();
+ return ret;
+ }
+
+enum TVerdict CTestAppLoaderBase::doTestStepPostambleL()
+ {
+ return CTestStep::doTestStepPostambleL();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderEndTask.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderEndTask.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,140 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderEndTask
+//
+//
+
+// USER includes
+#include "TestAppLoaderEndTask.h"
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include
+
+/*@{*/
+/// Parameters
+_LIT(KProgram, "program");
+
+/// Log messages
+_LIT(KLogTask, "Caption '%S'.");
+
+/// Error messages
+_LIT(KErrCode, "Error %d");
+_LIT(KErrMissingParameter, "Misssing Parameter %S");
+_LIT(KErrTaskNotFound, "Task '%S' not found");
+/*@}*/
+
+// constructor
+CTestAppLoaderEndTask::CTestAppLoaderEndTask()
+: CTestAppLoaderBase()
+ {
+ SetTestStepName(_L("EndTask"));
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAppLoaderEndTask::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> END TASK"));
+
+ TPtrC program;
+ if ( !GetStringFromConfig(ConfigSection(), KProgram, program) )
+ {
+ ERR_PRINTF2(KErrMissingParameter, &KProgram());
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ RApaLsSession apaLsSession;
+ User::LeaveIfError(apaLsSession.Connect());
+ CleanupClosePushL(apaLsSession);
+ User::LeaveIfError(apaLsSession.GetAllApps());
+
+ RWsSession ws;
+ User::LeaveIfError(ws.Connect());
+ CleanupClosePushL(ws);
+
+ TInt numWindowGroups = ws.NumWindowGroups();
+ CArrayFixFlat* windowGroupList = new(ELeave) CArrayFixFlat(numWindowGroups);
+ CleanupStack::PushL(windowGroupList);
+
+ // Populate array with current group list ids
+ User::LeaveIfError(ws.WindowGroupList(windowGroupList));
+
+ CApaWindowGroupName* windowGroupName = CApaWindowGroupName::NewLC(ws);
+
+ /* Note: we use windowGroupList->Count() instead of numWindowGroups, as in the middle of the
+ * update the list could change in length (or worse, be reduced) thus producing an out of bounds
+ * error if numWindowGroups were used
+ */
+ TBool searching=ETrue;
+ for ( TInt i=0; (iCount()) && searching; ++i )
+ {
+ TInt wgId = windowGroupList->At(i);
+ windowGroupName->ConstructFromWgIdL(wgId);
+
+ TUid appUid = windowGroupName->AppUid();
+
+ TApaAppInfo appInfo;
+ HBufC* appCaption = NULL;
+ // Some applications, like midlets, may not provide any info
+ if (apaLsSession.GetAppInfo(appInfo, appUid) == KErrNone)
+ {
+ appCaption = appInfo.iCaption.AllocL();
+ }
+ else
+ {
+ appCaption = windowGroupName->Caption().AllocL();
+ }
+ CleanupStack::PushL(appCaption);
+
+ // Only list 'visible' applications
+ if ( appCaption->Length() )
+ {
+ TPtrC caption=*appCaption;
+ INFO_PRINTF2(KLogTask, &caption);
+
+ if ( program.CompareC(caption)==0 )
+ {
+ searching=EFalse;
+ TApaTask task(ws);
+ task.SetWgId(wgId);
+ if (task.Exists())
+ {
+ task.EndTask();
+ }
+ else
+ {
+ ERR_PRINTF2(KErrTaskNotFound, &program);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ CleanupStack::Pop(1, appCaption); // taskEntry, appCaption
+ }
+
+ if ( searching )
+ {
+ ERR_PRINTF2(KErrTaskNotFound, &program);
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(4, &apaLsSession); // windowGroupName, windowGroupList
+ }
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderKillProcess.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderKillProcess.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,90 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderKillProcess
+//
+//
+
+// USER includes
+#include "TestAppLoaderKillProcess.h"
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include
+
+/*@{*/
+/// Parameters
+_LIT(KProgram, "program");
+
+/// Log messages
+_LIT(KLogProcess, "Process '%S'.");
+
+/// Error messages
+_LIT(KErrMissingParameter, "Misssing Parameter %S");
+_LIT(KErrProcessNotFound, "Process '%S' not found");
+/*@}*/
+
+// constructor
+CTestAppLoaderKillProcess::CTestAppLoaderKillProcess()
+: CTestAppLoaderBase()
+ {
+ SetTestStepName(_L("KillProcess"));
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAppLoaderKillProcess::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> KILL PROCESS"));
+
+ TPtrC program;
+ if ( !GetStringFromConfig(ConfigSection(), KProgram, program) )
+ {
+ ERR_PRINTF2(KErrMissingParameter, &KProgram());
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TFindProcess findProcess;
+ TFullName currentProcessName;
+ RProcess process;
+ TBool searching=ETrue;
+ while ( (findProcess.Next(currentProcessName)==KErrNone) && searching )
+ {
+ User::LeaveIfError(process.Open(currentProcessName));
+ CleanupClosePushL(process);
+
+ HBufC* fileName = process.FileName().AllocLC();
+
+ TPtrC name=*fileName;
+ INFO_PRINTF2(KLogProcess, &name);
+ if ( program.CompareC(name)==0 )
+ {
+ searching=EFalse;
+ process.Kill(0);
+ }
+ CleanupStack::PopAndDestroy(2, &process); // cmdLine, fileName, process
+ }
+ if ( searching )
+ {
+ ERR_PRINTF2(KErrProcessNotFound, &program);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderServer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderServer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,132 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This main DLL entry point for the Smoketest_AppLoader.dll
+//
+//
+
+// USER includes
+#include "TestAppLoaderServer.h"
+#include "TestAppLoaderAppStart.h"
+#include "TestAppLoaderKillProcess.h"
+#include "TestAppLoaderEndTask.h"
+#include "TestAppLoaderTaskRunning.h"
+
+/*@{*/
+_LIT(KServerName, "smoketest_apploader");
+/*@}*/
+
+CTestAppLoaderServer* CTestAppLoaderServer::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+ {
+ CTestAppLoaderServer* server = new (ELeave) CTestAppLoaderServer();
+ CleanupStack::PushL(server);
+ // CServer base class call
+ server->ConstructL();
+ server->StartL(KServerName);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+CTestAppLoaderServer::CTestAppLoaderServer()
+ : CTestServer()
+ {
+ }
+
+void CTestAppLoaderServer::ConstructL()
+ {
+ }
+
+CTestAppLoaderServer::~CTestAppLoaderServer()
+ {
+ }
+
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+ {
+#if (defined __DATA_CAGING__)
+ RProcess().DataCaging(RProcess::EDataCagingOn);
+ RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+ CActiveScheduler* sched=NULL;
+ sched=new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(sched);
+ CTestAppLoaderServer* server = NULL;
+ // Create the CTestServer derived server
+ TRAPD(err,server = CTestAppLoaderServer::NewL());
+ if(!err)
+ {
+ // Sync with the client and enter the active scheduler
+ RProcess::Rendezvous(KErrNone);
+ sched->Start();
+ }
+ delete server;
+ delete sched;
+ }
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return err;
+ }
+
+
+CTestStep* CTestAppLoaderServer::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+ {
+ CTestStep* testStep = NULL;
+
+ if(aStepName == _L("AppStart"))
+ {
+ testStep = new CTestAppLoaderAppStart();
+ }
+ else if(aStepName == _L("KillProcess"))
+ {
+ testStep = new CTestAppLoaderKillProcess();
+ }
+ else if(aStepName == _L("EndTask"))
+ {
+ testStep = new CTestAppLoaderEndTask();
+ }
+ else if(aStepName == _L("TaskRunning"))
+ {
+ testStep = new CTestAppLoaderTaskRunning();
+ }
+ return testStep;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/Src/TestAppLoaderTaskRunning.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/Src/TestAppLoaderTaskRunning.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,136 @@
+// Copyright (c) 2006-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestAppLoaderTaskRunning
+//
+//
+
+// USER includes
+#include "TestAppLoaderTaskRunning.h"
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include
+
+/*@{*/
+/// Parameters
+_LIT(KProgram, "program");
+
+/// Log messages
+_LIT(KLogTask, "Caption '%S'.");
+
+/// Error messages
+_LIT(KErrCode, "Error %d");
+_LIT(KErrMissingParameter, "Misssing Parameter %S");
+_LIT(KErrTaskNotFound, "Task '%S' not found");
+/*@}*/
+
+// constructor
+CTestAppLoaderTaskRunning::CTestAppLoaderTaskRunning()
+: CTestAppLoaderBase()
+ {
+ SetTestStepName(_L("TaskRunning"));
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestAppLoaderTaskRunning::doTestStepL( void )
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("TEST-> TASK RUNNING"));
+
+ TPtrC program;
+ if ( !GetStringFromConfig(ConfigSection(), KProgram, program) )
+ {
+ ERR_PRINTF2(KErrMissingParameter, &KProgram());
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ RApaLsSession apaLsSession;
+ User::LeaveIfError(apaLsSession.Connect());
+ CleanupClosePushL(apaLsSession);
+ User::LeaveIfError(apaLsSession.GetAllApps());
+
+ RWsSession ws;
+ User::LeaveIfError(ws.Connect());
+ CleanupClosePushL(ws);
+
+ TInt numWindowGroups = ws.NumWindowGroups();
+ CArrayFixFlat* windowGroupList = new(ELeave) CArrayFixFlat(numWindowGroups);
+ CleanupStack::PushL(windowGroupList);
+
+ // Populate array with current group list ids
+ User::LeaveIfError(ws.WindowGroupList(windowGroupList));
+
+ CApaWindowGroupName* windowGroupName = CApaWindowGroupName::NewLC(ws);
+
+ /* Note: we use windowGroupList->Count() instead of numWindowGroups, as in the middle of the
+ * update the list could change in length (or worse, be reduced) thus producing an out of bounds
+ * error if numWindowGroups were used
+ */
+ TBool searching=ETrue;
+ for ( TInt i=0; (iCount()) && searching; ++i )
+ {
+ TInt wgId = windowGroupList->At(i);
+ windowGroupName->ConstructFromWgIdL(wgId);
+
+ TUid appUid = windowGroupName->AppUid();
+
+ TApaAppInfo appInfo;
+ HBufC* appCaption = NULL;
+ // Some applications, like midlets, may not provide any info
+ if (apaLsSession.GetAppInfo(appInfo, appUid) == KErrNone)
+ {
+ appCaption = appInfo.iCaption.AllocL();
+ }
+ else
+ {
+ appCaption = windowGroupName->Caption().AllocL();
+ }
+ CleanupStack::PushL(appCaption);
+
+ // Only list 'visible' applications
+ if ( appCaption->Length() )
+ {
+ TPtrC caption=*appCaption;
+ INFO_PRINTF2(KLogTask, &caption);
+
+ if ( program.CompareC(caption)==0 )
+ {
+ searching=EFalse;
+ TApaTask task(ws);
+ task.SetWgId(wgId);
+ if (!task.Exists())
+ {
+ ERR_PRINTF2(KErrTaskNotFound, &program);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ CleanupStack::Pop(1, appCaption); // taskEntry, appCaption
+ }
+
+ if ( searching )
+ {
+ ERR_PRINTF2(KErrTaskNotFound, &program);
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(4, &apaLsSession); // windowGroupName, windowGroupList
+ }
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/scripts/setup_smoketest_apploader.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/scripts/setup_smoketest_apploader.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,22 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+RUN_UTILS MkDir c:\smoketest\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_apploader.ini c:\smoketest\smoketest_apploader.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_apploader.ini
+RUN_UTILS CopyFile z:\smoketest\smoketest_apploader.script c:\smoketest\smoketest_apploader.script
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_apploader.script
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/scripts/smoketest_apploader.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/scripts/smoketest_apploader.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,63 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+LOAD_SUITE smoketest_apploader -SharedData
+
+START_TESTCASE SMOKE_APP_LAUNCH_0001
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0001
+//! @SYMTestCaseDesc Start Smoketest_system.exe, and kill the process
+ RUN_TEST_STEP 1000 smoketest_apploader AppStart c:\smoketest\smoketest_apploader.ini SMOKE_APP_LAUNCH_0001
+ DELAY 5000
+ RUN_TEST_STEP 1000 smoketest_apploader KillProcess c:\smoketest\smoketest_apploader.ini SMOKE_APP_END_0001
+END_TESTCASE SMOKE_APP_LAUNCH_0001
+
+START_TESTCASE SMOKE_APP_LAUNCH_0002
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0002
+//! @SYMTestCaseDesc Verify the "Telephone" task is running
+ RUN_TEST_STEP 1000 smoketest_apploader TaskRunning c:\smoketest\smoketest_apploader.ini SMOKE_APP_RUNNING_0002
+END_TESTCASE SMOKE_APP_LAUNCH_0002
+
+START_TESTCASE SMOKE_APP_LAUNCH_0003
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0003
+//! @SYMTestCaseDesc Verify the "Clock" task is running
+ RUN_TEST_STEP 1000 smoketest_apploader TaskRunning c:\smoketest\smoketest_apploader.ini SMOKE_APP_RUNNING_0003
+END_TESTCASE SMOKE_APP_LAUNCH_0003
+
+START_TESTCASE SMOKE_APP_LAUNCH_0004
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0004
+//! @SYMTestCaseDesc Verify the "Messaging" task is running
+ RUN_TEST_STEP 1000 smoketest_apploader TaskRunning c:\smoketest\smoketest_apploader.ini SMOKE_APP_RUNNING_0004
+END_TESTCASE SMOKE_APP_LAUNCH_0004
+
+START_TESTCASE SMOKE_APP_LAUNCH_0005
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0005
+//! @SYMTestCaseDesc Start the SymcML task and end it.
+ RUN_TEST_STEP 1000 smoketest_apploader AppStart c:\smoketest\smoketest_apploader.ini SMOKE_APP_LAUNCH_0005
+ DELAY 5000
+ RUN_TEST_STEP 1000 smoketest_apploader EndTask c:\smoketest\smoketest_apploader.ini SMOKE_APP_END_0005
+END_TESTCASE SMOKE_APP_LAUNCH_0005
+
+START_TESTCASE SMOKE_APP_LAUNCH_0006
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0006
+//! @SYMTestCaseDesc Verify the "Calendar" task is running
+ RUN_TEST_STEP 1000 smoketest_apploader TaskRunning c:\smoketest\smoketest_apploader.ini SMOKE_APP_RUNNING_0006
+END_TESTCASE SMOKE_APP_LAUNCH_0006
+
+START_TESTCASE SMOKE_APP_LAUNCH_0007
+//! @SYMTestCaseID SMOKE_APP_LAUNCH_0007
+//! @SYMTestCaseDesc Verify the "Contacts" task is running
+ RUN_TEST_STEP 1000 smoketest_apploader TaskRunning c:\smoketest\smoketest_apploader.ini SMOKE_APP_RUNNING_0007
+END_TESTCASE SMOKE_APP_LAUNCH_0007
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/apploader/testdata/smoketest_apploader.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/apploader/testdata/smoketest_apploader.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,26 @@
+[SMOKE_APP_LAUNCH_0001]
+program =Smoketest_System.exe
+
+[SMOKE_APP_END_0001]
+program =Z:\sys\bin\Smoketest_System.exe
+
+[SMOKE_APP_RUNNING_0002]
+program =Telephone
+
+[SMOKE_APP_RUNNING_0003]
+program =Clock
+
+[SMOKE_APP_RUNNING_0004]
+program =Messaging
+
+[SMOKE_APP_LAUNCH_0005]
+program =NSmlDSSync.exe
+
+[SMOKE_APP_END_0005]
+program =Sync
+
+[SMOKE_APP_RUNNING_0006]
+program =Calendar
+
+[SMOKE_APP_RUNNING_0007]
+program =Contacts
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/ReadMe.doc
Binary file common/tools/ats/smoketest/contacts/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/TestData/Smoketest_Contacts.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/TestData/Smoketest_Contacts.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,52 @@
+[default]
+filename =c:\smoketest\smoketest_contacts.cdb
+filenameSecure =c:smoketest_contacts.cdb
+
+[18807_CreateDB]
+
+[18927_AddEntries]
+count =5
+
+firstname1 =Feroz
+lastname1 =Uddin
+company1 =Symbian
+job1 =Cricket fan
+workphone1 =0207
+workemail1 =feroz.uddin@symbian.com
+
+firstname2 =Louis
+lastname2 =Nayegon
+company2 =Symbian
+job2 =Lazy Git
+workphone2 =01452 812178
+workemail2 =louis.nayegon@symbian.com
+
+firstname3 =Alf
+lastname3 =Garnett
+company3 =BBC
+job3 =star
+workphone3 =0207 777
+homephone3 =0208 888
+fax3 =0208 999
+workemail3 =alf.garnett@bbc.co.uk
+internet3 =www.bbc.co.uk
+street3 =Marylebone Road
+town3 =London
+county3 =LondonCounty
+postcode3 =W1
+country3 =England
+notes3 =Small minded bigot
+
+firstname4 =Tom
+lastname4 =Jones
+company4 =Music
+job4 =Singer
+workemail4 =tom.jones@music.com
+
+firstname5 =Alan
+lastname5 =Shearer
+company5 =Newcastle United FC
+job5 =Footballer
+FirstNamePrn5 =Al-an
+LastNamePrn5 =Shea-rer
+CompanyNamePrn5 =New-cas-el You-Nigh-Ted
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/bwins/SMOKETEST_CONTACTS_SERVERU.DEF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/bwins/SMOKETEST_CONTACTS_SERVERU.DEF Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,3 @@
+EXPORTS
+ ?NewServer@@YAHXZ @ 1 NONAME ; int __cdecl NewServer(void)
+
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/group/Smoketest_Contacts.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/group/Smoketest_Contacts.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,51 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+//
+
+TARGET Smoketest_Contacts_Server.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7772
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY ReadUserData WriteUserData
+
+SOURCEPATH ..\Src
+
+SOURCE SmoketestContactsServer.cpp
+SOURCE TestContact.cpp
+SOURCE TestContactsAddEntries.cpp
+SOURCE TestContactsBase.cpp
+SOURCE TestContactsCreateDB.cpp
+
+USERINCLUDE ..\Inc ..\..\Group
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\Test
+
+LIBRARY efsrv.lib
+LIBRARY estor.lib
+LIBRARY charconv.lib
+LIBRARY cntview.lib
+LIBRARY euser.lib
+LIBRARY cntmodel.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
+
+// We're quite heavy on the stack... 4k in WinS isn't enough...
+EPOCSTACKSIZE 0x6000
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,25 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// For automated contacts smoketest
+//
+//
+
+PRJ_TESTEXPORTS
+
+../scripts/Smoketest_Contacts.script z:/smoketest/smoketest_contacts.script
+../scripts/setup_Smoketest_Contacts.script z:/smoketest/setup_smoketest_contacts.script
+../TestData/Smoketest_Contacts.ini z:/smoketest/smoketest_contacts.ini
+
+PRJ_TESTMMPFILES
+Smoketest_Contacts.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/inc/SmoketestContactsServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/inc/SmoketestContactsServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,38 @@
+/**
+* Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+
+
+/**
+ @file SmoketestContactsServer.h
+*/
+#if (!defined __SMOKETESTCONTACTS_SERVER_H__)
+#define __SMOKTETESTCONTACTS_SERVER_H__
+#include
+
+class CSmoketestContactsServer : public CTestServer
+ {
+public:
+ static CSmoketestContactsServer* NewL();
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+
+private:
+ void ConstructL();
+ };
+#endif
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/inc/TestContact.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/inc/TestContact.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,100 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContact
+//
+//
+
+#ifndef TEST_CONTACT_H
+#define TEST_CONTACT_H
+
+#include
+
+class MTestContactInstrumentation
+{
+public:
+ virtual void RaiseInstrumentationEventNotificationL(TInt aEventTag) = 0;
+};
+
+class CTestContact : public CBase
+ {
+public:
+ static CTestContact* NewL(CContactItem& aSeedContact);
+ static CTestContact* NewLC(CContactItem& aSeedContact);
+ static CTestContact* NewL(CContactItem* aSeedContact);
+ static CTestContact* NewLC(CContactItem* aSeedContact);
+ ~CTestContact();
+
+ CContactItem& ContactItem();
+ const TPtrC FirstNameL();
+ const TPtrC LastNameL();
+ const TPtrC CompanyNameL();
+ const TPtrC JobTitleL();
+ const TPtrC WorkPhoneL();
+ const TPtrC WorkMobileL();
+ const TPtrC HomePhoneL();
+ const TPtrC HomeMobileL();
+ const TPtrC FaxL();
+ const TPtrC EmailAddressL();
+ const TPtrC InternetAddressL();
+ const TPtrC StreetL();
+ const TPtrC TownL();
+ const TPtrC CountyL();
+ const TPtrC PostCodeL();
+ const TPtrC CountryL();
+ const TPtrC NotesL();
+ const TPtrC NickNameL();
+ const TPtrC PictureL();
+
+ void SetFirstNameL(const TDesC& aFirstName);
+ void SetLastNameL(const TDesC& aLastName);
+ void SetCompanyNameL(const TDesC& aCompanyName);
+ void SetJobTitleL(const TDesC& aJobTitle);
+ void SetWorkPhoneL(const TDesC& aWorkPhone);
+ void SetWorkMobileL(const TDesC& aWorkMobile);
+ void SetHomePhoneL(const TDesC& aHomePhone);
+ void SetHomeMobileL(const TDesC& aHomeMobile);
+ void SetFaxL(const TDesC& aFax);
+ void SetHomeEmailAddressL(const TDesC& aEmailAddress);
+ void SetWorkEmailAddressL(const TDesC& aEmailAddress);
+ void SetInternetAddressL(const TDesC& aInternetAddress);
+ void SetStreetL(const TDesC& aStreet);
+ void SetTownL(const TDesC& aTown);
+ void SetCountyL(const TDesC& aCounty);
+ void SetPostCodeL(const TDesC& aPostCode);
+ void SetCountryL(const TDesC& aCountry);
+ void SetNotesL(const TDesC& aNotes);
+ void SetNickNameL(const TDesC& aNickName);
+ void SetPictureL(const TDesC8& aPicture);
+
+private:
+ CTestContact();
+ void ConstructL(CContactItem& aSeedContact);
+ void ConstructL(CContactItem* aSeedContact);
+ const TPtrC TextFieldL(TFieldType aFieldType) const;
+ const TPtrC TextFieldL(const CContentType& aTypesToMatch) const;
+ void SetTextFieldL(const CContentType& aTypesToMatch,const TDesC& aText) const;
+ void SetTextFieldL(TFieldType aFieldType, const TDesC& aText);
+ void SetTextFieldL(TFieldType aFieldType, const TDesC& aText, TUid aAddOnContentType);
+ CContactItemField& FindFieldL(TFieldType aFieldType) const;
+ CContactItemField& FindFieldL(const CContentType& aTypesToMatch) const;
+ void SetPictureFieldL(const TDesC8& aPicture) const;
+ TInt FindField(TFieldType aFieldType) const;
+ void InsertTextFieldL(TUid aID, const TDesC& aStringOfStuff);
+
+private:
+ CContactItem* iContactItem;
+ TBool iDestroyOnExit;
+ };
+
+#endif /* __TEST_CONTACT_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/inc/TestContactsAddEntries.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/inc/TestContactsAddEntries.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,35 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestSuiteContacts
+//
+//
+
+#ifndef TEST_CONTACTS_ADD_ENTRIES_H
+#define TEST_CONTACTS_ADD_ENTRIES_H
+
+#include "TestContactsBase.h"
+
+class CTestContactsAddEntries : public CTestContactsBase
+{
+public:
+ CTestContactsAddEntries();
+ virtual ~CTestContactsAddEntries();
+
+ virtual enum TVerdict doTestStepL( void );
+
+private:
+ void AddEntriesL( void );
+};
+
+#endif TEST_CONTACTS_ADD_ENTRIES_H
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/inc/TestContactsBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/inc/TestContactsBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,53 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContactsBase
+//
+//
+
+#ifndef TEST_CONTACTS_BASE_H
+#define TEST_CONTACTS_BASE_H
+
+
+#include
+#include
+#include
+
+#include "TestContact.h"
+
+const TInt KMaxScriptLineLength = 200;
+
+class CTestContactsBase : public CTestStep, protected MTestContactInstrumentation
+{
+public:
+ CTestContactsBase();
+ ~CTestContactsBase();
+ virtual enum TVerdict doTestStepPreambleL();
+ virtual enum TVerdict doTestStepPostambleL();
+
+protected:
+ void CreateDatabase();
+ void OpenDatabase();
+ void CleanupDatabase();
+ void RaiseInstrumentationEventNotificationL(TInt aEventTag);
+ CContactIdArray* SearchEntriesL();
+
+protected:
+ CContactDatabase* iDatabase;
+ CContactItemFieldDef* iFieldDef;
+
+private:
+ CActiveScheduler* iSchedular;
+};
+
+#endif /* TEST_CONTACTS_BASE_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/inc/TestContactsCreateDB.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/inc/TestContactsCreateDB.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContactsCreateDB
+//
+//
+
+#ifndef TEST_CONTACTS_CREATE_DB_H
+#define TEST_CONTACTS_CREATE_DB_H
+
+#include "TestContactsBase.h"
+
+class CTestContactsCreateDB : public CTestContactsBase
+{
+public:
+ CTestContactsCreateDB();
+ virtual ~CTestContactsCreateDB();
+
+ virtual enum TVerdict doTestStepL( void );
+
+};
+
+#endif /* TEST_CONTACTS_CREATE_DB_H */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/scripts/Smoketest_Contacts.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/scripts/Smoketest_Contacts.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,26 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run Contacts smoketest
+//
+LOAD_SUITE Smoketest_Contacts_Server
+//
+START_TESTCASE 9094
+RUN_TEST_STEP 100 Smoketest_Contacts_Server CreateDB c:\smoketest\Smoketest_Contacts.ini 18807_CreateDB
+END_TESTCASE 9094
+START_TESTCASE 9082
+RUN_TEST_STEP 1000 Smoketest_Contacts_Server AddEntries c:\smoketest\Smoketest_Contacts.ini 18927_AddEntries
+END_TESTCASE 9082
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/scripts/setup_Smoketest_Contacts.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/scripts/setup_Smoketest_Contacts.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,22 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+RUN_UTILS MkDir c:\smoketest\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_contacts.ini c:\smoketest\smoketest_contacts.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_contacts.ini
+
+// RUN_SCRIPT Smoketest_Contacts.script
\ No newline at end of file
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/SmoketestContactsServer.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/SmoketestContactsServer.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,110 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+/**
+ @file SmoketestContactsServer.cpp
+*/
+
+#include "SmoketestContactsServer.h"
+#include "TestContactsCreateDB.h"
+#include "TestContactsAddEntries.h"
+
+// __EDIT_ME__ - Substitute the name of the test server
+_LIT(KServerName,"Smoketest_Contacts_Server");
+// __EDIT_ME__ - Use your own server class name
+CSmoketestContactsServer* CSmoketestContactsServer::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+ {
+ CSmoketestContactsServer * server = new (ELeave) CSmoketestContactsServer();
+ CleanupStack::PushL(server);
+ // CServer base class call
+ server->StartL(KServerName);
+ CleanupStack::Pop(server);
+ return server;
+ }
+
+
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+ {
+#if (defined __DATA_CAGING__)
+ RProcess().DataCaging(RProcess::EDataCagingOn);
+ RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+ CActiveScheduler* sched=NULL;
+ sched=new(ELeave) CActiveScheduler;
+ CActiveScheduler::Install(sched);
+ CSmoketestContactsServer* server = NULL;
+ // Create the CTestServer derived server
+ TRAPD(err,server = CSmoketestContactsServer::NewL());
+ if(!err)
+ {
+ // Sync with the client and enter the active scheduler
+ RProcess::Rendezvous(KErrNone);
+ sched->Start();
+ }
+ delete server;
+ delete sched;
+ }
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+ {
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ if(cleanup == NULL)
+ {
+ return KErrNoMemory;
+ }
+ TRAPD(err,MainL());
+
+ if (!err) { }
+ delete cleanup;
+ __UHEAP_MARKEND;
+ return KErrNone;
+ }
+
+
+// __EDIT_ME__ - Use your own server class name
+CTestStep* CSmoketestContactsServer::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+ {
+ CTestStep* testStep = NULL;
+// __EDIT_ME__ - Create your own test steps here
+ if(aStepName == _L("AddEntries"))
+ testStep = new CTestContactsAddEntries();
+ if(aStepName == _L("CreateDB"))
+ testStep = new CTestContactsCreateDB();
+
+ return testStep;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/TestContact.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/TestContact.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,491 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContact
+//
+//
+
+#include
+
+#include "TestContact.h"
+
+CTestContact* CTestContact::NewL(CContactItem& aSeedContact)
+ {
+ CTestContact* self=CTestContact::NewLC(aSeedContact);
+ CleanupStack::Pop();
+ return self;
+ }
+
+CTestContact* CTestContact::NewLC(CContactItem& aSeedContact)
+ {
+ CTestContact* self=new(ELeave) CTestContact();
+ CleanupStack::PushL(self);
+ self->ConstructL(aSeedContact);
+ return self;
+ }
+
+CTestContact* CTestContact::NewL(CContactItem* aSeedContact)
+ {
+ CTestContact* self=CTestContact::NewLC(aSeedContact);
+ CleanupStack::Pop();
+ return self;
+ }
+
+CTestContact* CTestContact::NewLC(CContactItem* aSeedContact)
+ {
+ CTestContact* self=new(ELeave) CTestContact();
+ CleanupStack::PushL(self);
+ self->ConstructL(aSeedContact);
+ return self;
+ }
+
+CTestContact::CTestContact() : iDestroyOnExit(EFalse)
+ {
+ }
+
+void CTestContact::ConstructL(CContactItem& aSeedContact)
+ {
+ iDestroyOnExit=ETrue;
+ iContactItem=CContactCard::NewL(&aSeedContact);
+ }
+
+void CTestContact::ConstructL(CContactItem* aSeedContact)
+ {
+ iDestroyOnExit=EFalse;
+ iContactItem=aSeedContact;
+ }
+
+CTestContact::~CTestContact()
+ {
+ if (iDestroyOnExit)
+ delete iContactItem;
+ iContactItem=NULL;
+ }
+
+CContactItem& CTestContact::ContactItem()
+ {
+ return *iContactItem;
+ }
+
+const TPtrC CTestContact::FirstNameL()
+ {
+ return TextFieldL(KUidContactFieldGivenName);
+ }
+
+const TPtrC CTestContact::LastNameL()
+ {
+ return TextFieldL(KUidContactFieldFamilyName);
+ }
+
+const TPtrC CTestContact::CompanyNameL()
+ {
+ return TextFieldL(KUidContactFieldCompanyName);
+ }
+
+const TPtrC CTestContact::JobTitleL()
+ {
+ return TextFieldL(KUidContactFieldJobTitle);
+ }
+
+const TPtrC CTestContact::WorkPhoneL()
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ const TPtrC text=TextFieldL(*contentType);
+ CleanupStack::PopAndDestroy(); // contentType.
+ return text;
+ }
+
+const TPtrC CTestContact::WorkMobileL()
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ const TPtrC text=TextFieldL(*contentType);
+ CleanupStack::PopAndDestroy(); // contentType.
+ return text;
+ }
+
+const TPtrC CTestContact::HomePhoneL()
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ const TPtrC text=TextFieldL(*contentType);
+ CleanupStack::PopAndDestroy(); // contentType.
+ return text;
+ }
+
+const TPtrC CTestContact::HomeMobileL()
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ const TPtrC text=TextFieldL(*contentType);
+ CleanupStack::PopAndDestroy(); // contentType.
+ return text;
+ }
+
+const TPtrC CTestContact::FaxL()
+ {
+ return TextFieldL(KUidContactFieldFax);
+ }
+
+const TPtrC CTestContact::EmailAddressL()
+ {
+ return TextFieldL(KUidContactFieldEMail);
+ }
+
+const TPtrC CTestContact::InternetAddressL()
+ {
+ return TextFieldL(KUidContactFieldUrl);
+ }
+
+const TPtrC CTestContact::StreetL()
+ {
+ return TextFieldL(KUidContactFieldAddress);
+ }
+
+const TPtrC CTestContact::TownL()
+ {
+ return TextFieldL(KUidContactFieldLocality);
+ }
+
+const TPtrC CTestContact::CountyL()
+ {
+ return TextFieldL(KUidContactFieldRegion);
+ }
+
+const TPtrC CTestContact::PostCodeL()
+ {
+ return TextFieldL(KUidContactFieldPostcode);
+ }
+
+const TPtrC CTestContact::CountryL()
+ {
+ return TextFieldL(KUidContactFieldCountry);
+ }
+
+const TPtrC CTestContact::NotesL()
+ {
+ return TextFieldL(KUidContactFieldNote);
+ }
+
+const TPtrC CTestContact::NickNameL()
+ {
+ return TextFieldL(KUidContactFieldSecondName);
+ }
+
+const TPtrC CTestContact::PictureL()
+ {
+ return TextFieldL(KUidContactFieldPicture);
+ }
+
+void CTestContact::SetFirstNameL(const TDesC& aFirstName)
+ {
+ SetTextFieldL(KUidContactFieldGivenName, aFirstName, KUidContactFieldVCardMapUnusedN);
+ }
+
+void CTestContact::SetLastNameL(const TDesC& aLastName)
+ {
+ SetTextFieldL(KUidContactFieldFamilyName, aLastName, KUidContactFieldVCardMapUnusedN);
+ }
+
+void CTestContact::SetCompanyNameL(const TDesC& aCompanyName)
+ {
+ SetTextFieldL(KUidContactFieldCompanyName, aCompanyName, KUidContactFieldVCardMapORG);
+ }
+
+void CTestContact::SetJobTitleL(const TDesC& aJobTitle)
+ {
+ SetTextFieldL(KUidContactFieldJobTitle,aJobTitle);
+ }
+
+void CTestContact::SetWorkPhoneL(const TDesC& aWorkPhone)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ SetTextFieldL(*contentType,aWorkPhone);
+ CleanupStack::PopAndDestroy(); // contentType.
+ }
+
+void CTestContact::SetWorkMobileL(const TDesC& aWorkMobile)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ SetTextFieldL(*contentType,aWorkMobile);
+ CleanupStack::PopAndDestroy(); // contentType.
+ }
+
+void CTestContact::SetHomePhoneL(const TDesC& aHomePhone)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ SetTextFieldL(*contentType,aHomePhone);
+ CleanupStack::PopAndDestroy(); // contentType.
+ }
+
+void CTestContact::SetHomeMobileL(const TDesC& aHomeMobile)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ SetTextFieldL(*contentType,aHomeMobile);
+ CleanupStack::PopAndDestroy(); // contentType.
+ }
+
+void CTestContact::SetFaxL(const TDesC& aFax)
+ {
+ SetTextFieldL(KUidContactFieldFax,aFax);
+ }
+
+void CTestContact::SetHomeEmailAddressL(const TDesC& aEmailAddress)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldEMail);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ SetTextFieldL(*contentType,aEmailAddress);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+void CTestContact::SetWorkEmailAddressL(const TDesC& aEmailAddress)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldEMail);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ SetTextFieldL(*contentType,aEmailAddress);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+
+void CTestContact::SetInternetAddressL(const TDesC& aInternetAddress)
+ {
+ SetTextFieldL(KUidContactFieldUrl,aInternetAddress);
+ }
+
+void CTestContact::SetStreetL(const TDesC& aStreet)
+ {
+ SetTextFieldL(KUidContactFieldAddress,aStreet);
+ }
+
+void CTestContact::SetTownL(const TDesC& aTown)
+ {
+ SetTextFieldL(KUidContactFieldLocality,aTown);
+ }
+
+void CTestContact::SetCountyL(const TDesC& aCounty)
+ {
+ SetTextFieldL(KUidContactFieldRegion,aCounty);
+ }
+
+void CTestContact::SetPostCodeL(const TDesC& aPostCode)
+ {
+ SetTextFieldL(KUidContactFieldPostcode,aPostCode);
+ }
+
+void CTestContact::SetCountryL(const TDesC& aCountry)
+ {
+ SetTextFieldL(KUidContactFieldCountry,aCountry);
+ }
+
+void CTestContact::SetNotesL(const TDesC& aNotes)
+ {
+ SetTextFieldL(KUidContactFieldNote,aNotes);
+ }
+
+void CTestContact::SetNickNameL(const TDesC& aNickName)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldSecondName);
+ TRAPD(err, SetTextFieldL(*contentType,aNickName));
+ if (!err) { }
+ CleanupStack::PopAndDestroy(); // contentType.
+ }
+
+void CTestContact::SetPictureL(const TDesC8& aPicture)
+ {
+ CContentType* contentType=CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPicture);
+ SetPictureFieldL(aPicture);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+const TPtrC CTestContact::TextFieldL(TFieldType aFieldType) const
+ {
+ CContactItemField& field=FindFieldL(aFieldType);
+ ASSERT(field.StorageType()==KStorageTypeText);
+ return STATIC_CAST(CContactTextField*,(field.Storage()))->Text();
+ }
+
+const TPtrC CTestContact::TextFieldL(const CContentType& aTypesToMatch) const
+ {
+ CContactItemField& field=FindFieldL(aTypesToMatch);
+ ASSERT(field.StorageType()==KStorageTypeText);
+ return STATIC_CAST(CContactTextField*,field.Storage())->Text();
+ }
+
+void CTestContact::InsertTextFieldL(TFieldType aID, const TDesC& aStringOfStuff )
+ {
+ CContactItemField* itemFieldPtr = NULL;
+ CContactTextField* textStoragePtr = NULL;
+
+ itemFieldPtr = CContactItemField::NewLC( KStorageTypeText, aID );
+ textStoragePtr = itemFieldPtr->TextStorage(); // we don't have ownership here, hence no stack.
+
+ textStoragePtr->SetTextL( aStringOfStuff );
+ textStoragePtr = NULL; // we've finished with this ptr now.
+
+ iContactItem->AddFieldL( *itemFieldPtr ); // hand ownership over here
+ CleanupStack::Pop( itemFieldPtr ); // and pop,
+ }
+
+void CTestContact::SetTextFieldL(TFieldType aFieldType,const TDesC& aText)
+ {
+ TInt fieldIndex=FindField(aFieldType);
+
+ if ( fieldIndex > KErrNotFound )
+ {
+ CContactItemField& field=FindFieldL(aFieldType);
+ ASSERT(field.StorageType()==KStorageTypeText);
+ STATIC_CAST(CContactTextField*,field.Storage())->SetText(aText.AllocL());
+ }
+ else
+ {
+ InsertTextFieldL(aFieldType, aText);
+ }
+ }
+
+void CTestContact::SetTextFieldL(const CContentType& aTypesToMatch,const TDesC& aText) const
+ {
+ CContactItemField& field=FindFieldL(aTypesToMatch);
+ ASSERT(field.StorageType()==KStorageTypeText);
+ STATIC_CAST(CContactTextField*,field.Storage())->SetText(aText.AllocL());
+ }
+
+CContactItemField& CTestContact::FindFieldL(TFieldType aFieldType) const
+ {
+ CContactItemFieldSet& fields=iContactItem->CardFields();
+ TInt index=fields.Find(aFieldType);
+ User::LeaveIfError(index);
+ return fields[index];
+ }
+
+void CTestContact::SetTextFieldL(TFieldType aFieldType, const TDesC& aText, TUid aAddOnContentType)
+ {
+ CContactItemFieldSet& fields = iContactItem->CardFields();
+ CContactTextField* textField = NULL;
+ TInt fieldIndex = 0;
+
+ fieldIndex = FindField( aFieldType );
+
+ if (fieldIndex == KErrNotFound )
+ {
+ InsertTextFieldL( aFieldType, aText );
+ fieldIndex = FindField( aFieldType );
+ CContactItemField& field = fields[ fieldIndex ];
+ field.AddFieldTypeL( aAddOnContentType );
+ }
+ else if (fieldIndex >= KErrNone )
+ {
+ CContactItemField& field = fields[ fieldIndex ];
+ ASSERT(field.StorageType()==KStorageTypeText);
+ textField = static_cast(field.Storage());
+ textField->SetText( aText.AllocL() );
+ field.AddFieldTypeL( aAddOnContentType );
+ }
+ }
+
+TInt CTestContact::FindField(TFieldType aFieldType) const
+ {
+ return iContactItem->CardFields().Find( aFieldType );
+ }
+
+CContactItemField& CTestContact::FindFieldL(const CContentType& aTypesToMatch) const
+ {
+ CContactItemFieldSet& fields=iContactItem->CardFields();
+ const TInt numTypesToMatch(aTypesToMatch.FieldTypeCount());
+ const TFieldType mainFieldType(aTypesToMatch.FieldType(0));
+ TInt index=-1;
+ FOREVER
+ {
+ index=fields.FindNext(mainFieldType,index+1);
+ User::LeaveIfError(index);
+
+ CContactItemField& thisPhoneField=fields[index];
+ const CContentType& thisPhoneFieldTypes=thisPhoneField.ContentType();
+ const TInt numFieldTypes(thisPhoneFieldTypes.FieldTypeCount());
+
+ if (numFieldTypes!=numTypesToMatch)
+ {
+ continue;
+ }
+
+ TInt numTypesLeftToMatch=numTypesToMatch;
+ for (TInt ii=0;iiCardFields();
+ TInt pos;
+ pos=fieldSet.Find(KUidContactFieldPicture);
+ User::LeaveIfError(pos);
+ fieldSet[pos].StoreStorage()->SetThingL(aPicture);
+
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/TestContactsAddEntries.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/TestContactsAddEntries.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,408 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContactsAddEntries
+//
+//
+
+// Epoc include
+#include
+
+// User include
+#include "TestContactsAddEntries.h"
+#include "TestContact.h"
+
+/*@{*/
+/// Literal constants
+_LIT(KCardTemplateName, "TestTemplate");
+_LIT(KCount, "count");
+_LIT(KFirstName, "firstname%d");
+_LIT(KLastName, "lastname%d");
+_LIT(KCompanyName, "company%d");
+_LIT(KJobTitle, "job%d");
+_LIT(KWorkPhone, "workphone%d");
+_LIT(KWorkMobile, "workmobile%d");
+_LIT(KHomePhone, "homephone%d");
+_LIT(KHomeMobile, "homemobile%d");
+_LIT(KFax, "fax%d");
+_LIT(KWorkEmailAddress, "workemail%d");
+_LIT(KInternetAddress, "internet%d");
+_LIT(KStreet, "street%d");
+_LIT(KTown, "town%d");
+_LIT(KCounty, "county%d");
+_LIT(KPostCode, "postcode%d");
+_LIT(KCountry, "country%d");
+_LIT(KNotes, "notes%d");
+_LIT(KNickName, "nickName%d");
+_LIT(KPictureName, "picturename%d");
+_LIT(KGroupName, "groupname%d");
+_LIT(KTemplateName, "templatename%d");
+_LIT(KOneFieldTemplate, "OneFieldTemplate");
+/*@}*/
+
+
+CTestContactsAddEntries::CTestContactsAddEntries()
+/**
+Default Constructor
+ */
+ {
+ SetTestStepName(_L("AddEntries"));
+ }
+
+CTestContactsAddEntries::~CTestContactsAddEntries()
+/**
+Destructor
+ */
+ {
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestContactsAddEntries::doTestStepL()
+/**
+invoked by the test execute framework for exercising the
+functionality under test
+@return EPass: The test passed succesfully;
+ EFail: The test failed;
+ EInconclusive: The result of the test was inconclusive;
+ ETestSuiteError: Error in the test suite;
+ EAbort: The test was aborted;
+ EIgnore: The test was unexecuted
+@leave system wide error codes
+*/
+ {
+
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("Contacts Add Entries Test"));
+
+ OpenDatabase();
+ if ( TestStepResult() == EPass )
+ {
+ TRAPD(r, AddEntriesL());
+ if (r!=KErrNone)
+ {
+ ERR_PRINTF2(_L("Test step failed with error code = %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+ CleanupDatabase();
+
+ // test steps return a result
+ return TestStepResult();
+ }
+
+void CTestContactsAddEntries::AddEntriesL()
+/**
+This function adds contact entries to the database depending on entry type.
+If the entry contains the group name then the contact will be added to the
+particular group specified in the entry. If the entry contains the template
+name then the contact item depending on the specified template name will be
+created and added to the database.
+
+@leave system wide error code
+ */
+ {
+ TBool groupExists = EFalse;
+ TBool templateFound = EFalse;
+ TInt count=1;
+
+ if ( !GetIntFromConfig(ConfigSection(), KCount, count) )
+ {
+ count=1;
+ }
+
+ INFO_PRINTF2(_L("Number of Entries to Add = %d"), count);
+
+ TBuf tempStore;
+ TPtrC ptrString;
+
+ /*******************************************************************
+ To Create a contact card template depending upon the contact item
+ on which the new template's field set is based. The template name
+ on which the new template is based is read from the ini file.
+ *******************************************************************/
+
+ for (TInt entry=0; entryCreateContactCardTemplateLC(KCardTemplateName);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Template Name = %S"), &ptrString);
+ CContactIdArray* templateList = NULL;
+ CContactItem* tempTemplate = NULL;
+
+ // Returns a copy of the database's template ID list
+ templateList = iDatabase->GetCardTemplateIdListL();
+ CleanupStack::PushL(templateList);
+
+ // Returns the number of contact card templates that currently exist in the database.
+ TInt tCount = iDatabase->TemplateCount();
+ INFO_PRINTF2(_L("Number of existing templates = %d"), tCount);
+
+ // Search for template in the template ID list
+ for(TInt i = 0; iReadContactLC((*templateList)[i]));
+
+ // Gets the label for a contact card template.
+ TPtrC tempLabel = STATIC_CAST(CContactCardTemplate*,tempTemplate)->GetTemplateLabelL();
+
+ // Compare the template label
+ if(!(tempLabel.Compare(ptrString)))
+ {
+ INFO_PRINTF2(_L("Template %S found"), &tempLabel);
+
+ // Creates a contact card template and adds it to the database
+ item = iDatabase->CreateContactCardTemplateLC(tempTemplate,tempLabel);
+
+ // Compare the template label with OneFieldTemplate and add field to it.
+ if(!(tempLabel.Compare(KOneFieldTemplate)))
+ {
+ // Allocates and constructs a contact item field
+ CContactItemField* field=CContactItemField::NewLC(KStorageTypeText,KUidContactFieldGivenName);
+ item->AddFieldL(*field);
+ CleanupStack::Pop(field); // field
+ }
+ CleanupStack::Pop(item);
+ templateFound = ETrue;
+ }
+ CleanupStack::PopAndDestroy(tempTemplate);
+ }
+
+ if (!templateFound)
+ {
+ ERR_PRINTF2(_L("Ini Template %S does not match existing templates"), &ptrString);
+ SetTestStepResult(EFail);
+ }
+
+ // Set templateFound to false for next entry
+ templateFound = EFalse;
+
+ CleanupStack::PopAndDestroy(templateList);
+ CleanupStack::PushL(item);
+ }
+
+ CTestContact* contact=CTestContact::NewLC(*item);
+
+ tempStore.Format(KFirstName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("firstname = %S"), &ptrString);
+ contact->SetFirstNameL(ptrString);
+ }
+
+ tempStore.Format(KNickName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("NickName = %S"), &ptrString);
+ TRAPD(err, contact->SetNickNameL(ptrString));
+ if ( err != KErrNone )
+ {
+ ERR_PRINTF2(_L("SetNickNameL Leave = %d"), err);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ tempStore.Format(KLastName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("lastname = %S"), &ptrString);
+ contact->SetLastNameL(ptrString);
+ }
+
+ tempStore.Format(KCompanyName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("company = %S"), &ptrString);
+ contact->SetCompanyNameL(ptrString);
+ }
+
+ tempStore.Format(KJobTitle(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("job = %S"), &ptrString);
+ contact->SetJobTitleL(ptrString);
+ }
+
+ tempStore.Format(KWorkPhone(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("work phone = %S"), &ptrString);
+ contact->SetWorkPhoneL(ptrString);
+ }
+
+ tempStore.Format(KWorkMobile(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("work mobile = %S"), &ptrString);
+ contact->SetWorkMobileL(ptrString);
+ }
+
+ tempStore.Format(KHomePhone(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("home phone = %S"), &ptrString);
+ contact->SetHomePhoneL(ptrString);
+ }
+
+ tempStore.Format(KHomeMobile(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("home mobile = %S"), &ptrString);
+ contact->SetHomeMobileL(ptrString);
+ }
+
+ tempStore.Format(KFax(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("fax = %S"), &ptrString);
+ contact->SetFaxL(ptrString);
+ }
+
+ tempStore.Format(KWorkEmailAddress(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("work email = %S"), &ptrString);
+ contact->SetWorkEmailAddressL(ptrString);
+ }
+
+ tempStore.Format(KInternetAddress(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("internet = %S"), &ptrString);
+ contact->SetInternetAddressL(ptrString);
+ }
+
+ tempStore.Format(KStreet(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("street = %S"), &ptrString);
+ contact->SetStreetL(ptrString);
+ }
+
+ tempStore.Format(KTown(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("town = %S"), &ptrString);
+ contact->SetTownL(ptrString);
+ }
+
+ tempStore.Format(KCounty(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("county = %S"), &ptrString);
+ contact->SetCountyL(ptrString);
+ }
+
+ tempStore.Format(KPostCode(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("post code = %S"), &ptrString);
+ contact->SetPostCodeL(ptrString);
+ }
+
+ tempStore.Format(KCountry(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("country = %S"), &ptrString);
+ contact->SetCountryL(ptrString);
+ }
+
+ tempStore.Format(KNotes(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("notes = %S"), &ptrString);
+ contact->SetNotesL(ptrString);
+ }
+
+ tempStore.Format(KPictureName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("Picture Name = %S"), &ptrString);
+
+ HBufC8* pictureName8 = HBufC8::NewLC(ptrString.Length());
+ pictureName8->Des().Copy(ptrString);
+
+ contact->SetPictureL(*pictureName8);
+
+ CleanupStack::PopAndDestroy(pictureName8);
+ }
+
+ tempStore.Format(KGroupName(), entry);
+ if (GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+ {
+ INFO_PRINTF2(_L("Group Name = %S"), &ptrString);
+
+ // Flag for adding contacts to group.
+ groupExists = ETrue;
+ }
+
+ const TContactItemId id = iDatabase->AddNewContactL(contact->ContactItem());
+
+ /********************************************************************
+ This is for adding the contact entry to the specified group.
+ ********************************************************************/
+ if(groupExists)
+ {
+ INFO_PRINTF1(_L("Adding Item "));
+ CContactIdArray* groupList = NULL;
+
+ // Returns a copy of the database's group ID list
+ groupList = iDatabase->GetGroupIdListL();
+ CleanupStack::PushL(groupList);
+
+ // Returns the number of groups that currently exist in the database
+ TInt groupCount = iDatabase->GroupCount();
+
+
+ // Search for the group
+ for(TInt i = 0; iReadContactLC((*groupList)[i]));
+
+ // Gets the contact item's ID.
+ const TContactItemId groupId1 = group->Id();
+
+ // Gets the group label.
+ TPtrC label = group->GetGroupLabelL();
+ // Compare the group label with group name read from ini file.
+ if(!(label.Compare(ptrString)))
+ {
+ /**
+ Sets a contact item which already exists in the database
+ to be a member of a contact group
+ */
+ iDatabase->AddContactToGroupL(id, groupId1);
+ INFO_PRINTF1(_L("Item added successfully"));
+ groupExists = EFalse;
+ }
+ CleanupStack::PopAndDestroy(group);
+
+ }
+ CleanupStack::PopAndDestroy(groupList);
+ }
+
+ CleanupStack::PopAndDestroy(contact);
+ CleanupStack::PopAndDestroy(item);
+
+ }
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/TestContactsBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/TestContactsBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,176 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This CTestContactsBase
+//
+//
+
+// User include
+#include "TestContactsBase.h"
+
+// EPOC includes
+#include
+#include
+#include
+#include
+
+/*@{*/
+/// Literal constants
+_LIT(KDef, "default");
+_LIT(KFileName, "filenameSecure");
+_LIT(KKey, "key");
+/*@}*/
+
+
+// constructor
+CTestContactsBase::CTestContactsBase()
+: iDatabase(NULL)
+, iFieldDef(NULL)
+, iSchedular(NULL)
+ {
+ }
+
+// destructor
+CTestContactsBase::~CTestContactsBase()
+ {
+ delete iFieldDef;
+ iFieldDef=NULL;
+
+ delete iSchedular;
+ iSchedular=NULL;
+ CActiveScheduler::Install(NULL);
+ }
+
+enum TVerdict CTestContactsBase::doTestStepPreambleL()
+ {
+ iSchedular=new (ELeave)CActiveScheduler();
+ CActiveScheduler::Install(iSchedular);
+
+ iFieldDef=new(ELeave) CContactItemFieldDef;
+ iFieldDef->AppendL(KUidContactFieldFamilyName);
+ iFieldDef->AppendL(KUidContactFieldGivenName);
+ return CTestStep::doTestStepPreambleL();
+ }
+
+enum TVerdict CTestContactsBase::doTestStepPostambleL()
+ {
+ delete iFieldDef;
+ iFieldDef=NULL;
+
+ delete iSchedular;
+ iSchedular=NULL;
+ CActiveScheduler::Install(NULL);
+
+ return CTestStep::doTestStepPostambleL();
+ }
+
+// Create a new database
+void CTestContactsBase::CreateDatabase()
+ {
+ TPtrC ptrFileName;
+ TBool returnValue =GetStringFromConfig(ConfigSection(), KFileName(), ptrFileName);
+ if (!returnValue)
+ returnValue=GetStringFromConfig(KDef(), KFileName(), ptrFileName);
+
+ // Create database
+ if (returnValue)
+ {
+ INFO_PRINTF2(_L("filename = %S"), &ptrFileName);
+ TRAPD(r, iDatabase=CContactDatabase::ReplaceL(ptrFileName))
+ if (r!=KErrNone)
+ {
+ ERR_PRINTF2(_L("Creating Contacts file failed. Error %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No Contacts file specified. Open default file."));
+ TRAPD(r, iDatabase=CContactDatabase::ReplaceL())
+ if (r!=KErrNone)
+ {
+ ERR_PRINTF2(_L("Creating Contacts file failed. Error %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+
+void CTestContactsBase::OpenDatabase()
+ {
+ TPtrC ptrFileName;
+ TBool returnValue =GetStringFromConfig(ConfigSection(), KFileName(), ptrFileName);
+ if (!returnValue)
+ returnValue=GetStringFromConfig(KDef(), KFileName(), ptrFileName);
+
+ // Open database
+ if (returnValue)
+ {
+ INFO_PRINTF2(_L("filename = %S"), &ptrFileName);
+ RaiseInstrumentationEventNotificationL(17);
+ TRAPD(r, iDatabase=CContactDatabase::OpenL(ptrFileName));
+ RaiseInstrumentationEventNotificationL(18);
+ if (r!=KErrNone)
+ {
+ ERR_PRINTF2(_L("Opening Contacts file failed. Error %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No Contacts file specified. Open default file."));
+ RaiseInstrumentationEventNotificationL(17);
+ TRAPD(r, iDatabase=CContactDatabase::OpenL(CContactDatabase::EMultiThread));
+ RaiseInstrumentationEventNotificationL(18);
+ if (r!=KErrNone)
+ {
+ ERR_PRINTF2(_L("Opening Contacts file failed. Error %d"), r);
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+
+void CTestContactsBase::CleanupDatabase()
+ {
+ delete iDatabase;
+ iDatabase=NULL;
+ }
+
+void CTestContactsBase::RaiseInstrumentationEventNotificationL(TInt aEventTag)
+ {
+ INFO_PRINTF2(_L("RaiseEventNotification %d"), aEventTag);
+ }
+
+CContactIdArray* CTestContactsBase::SearchEntriesL()
+/**
+This function searches in the contacts database and populates an array
+with ids' of the contacts which satisfy the search criterion
+read from the ini file.
+@return - Pointer to the contact ID array
+@leave system wide error code
+ */
+ {
+ TPtrC ptrKey;
+ if (!GetStringFromConfig(ConfigSection(), KKey, ptrKey))
+ {
+ ERR_PRINTF1(_L("No key value for entry"));
+ SetTestStepResult(EFail);
+ }
+ INFO_PRINTF2(_L("Key Value for Entry Search = %S"), &ptrKey);
+
+ // The function searches the fields contained in the field definition
+ INFO_PRINTF1(_L("Searching through the database for entry"));
+
+ CContactIdArray* ret=iDatabase->FindLC(ptrKey, iFieldDef);
+ CleanupStack::Pop(ret);
+ return ret;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/TestContactsCreateDB.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/TestContactsCreateDB.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,42 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestContactsCreateDB
+//
+//
+
+#include
+
+#include "TestContactsCreateDB.h"
+
+CTestContactsCreateDB::CTestContactsCreateDB()
+ {
+ SetTestStepName(_L("CreateDB"));
+ }
+
+CTestContactsCreateDB::~CTestContactsCreateDB()
+ {
+ }
+
+// Each test step must supply a implementation for doTestStepL
+enum TVerdict CTestContactsCreateDB::doTestStepL()
+ {
+ // Printing to the console and log file
+ INFO_PRINTF1(_L("Contacts CreateDB Test"));
+
+ CreateDatabase();
+ CleanupDatabase();
+
+ // test steps return a result
+ return TestStepResult();
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/contacts/src/sm_contacts.ini
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/contacts/src/sm_contacts.ini Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,2 @@
+[Files MRU]
+0=m:\src\common\generic\smoketest\agenda\src\TestAgendaServerLaunchProgress.cpp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Group/Smoketest_Mess.mmp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Group/Smoketest_Mess.mmp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,82 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// using relative paths for sourcepath and user includes
+//
+//
+
+TARGET Smoketest_Mess_Server.exe
+TARGETTYPE exe
+UID 0x1000007A 0x101F7774
+
+#if (!defined __NO_VENDORID__)
+VENDORID 0x70000001
+#endif
+
+CAPABILITY ReadUserData WriteUserData WriteDeviceData NetworkServices
+
+#if (defined _PLATTEST_CDMA_)
+MACRO CDMA_API_ENABLED
+MACRO GSM_COMPATIBILITY_MODE
+#endif
+
+SOURCEPATH ..\Src
+
+SOURCE TestMessServer.cpp
+SOURCE TestMessSession.cpp
+SOURCE TestMessSharedData.cpp
+SOURCE TestMessWatcher.cpp
+SOURCE TestMessProcessor.cpp
+SOURCE TestMessTimer.cpp
+SOURCE TestMessBase.cpp
+SOURCE TestMessCleanMessageFolder.cpp
+SOURCE TestMessCreateSmsAccount.cpp
+SOURCE TestMessSetDefaultSc.cpp
+SOURCE TestMessCreateSMS.cpp
+SOURCE TestMessCreateGsmSmsUtil.cpp
+#ifdef _PLATTEST_CDMA_
+SOURCE TestMessCreateCdmaSmsUtil.cpp
+#endif
+SOURCE TestMessCreateSmsUtilBase.cpp
+SOURCE TestMessProcessExistingMsg.cpp
+SOURCE TestMessEditEntry.cpp
+SOURCE TestMessStoreProcessUtil.cpp
+SOURCE TestMessEditEntryUtil.cpp
+SOURCE TestMessPrintEntryUtil.cpp
+
+USERINCLUDE ..\Inc
+USERINCLUDE ..\..\Group
+
+SYSTEMINCLUDE \Epoc32\include
+SYSTEMINCLUDE \Epoc32\include\Test
+
+LIBRARY etel.lib
+LIBRARY schsend.lib
+LIBRARY estor.lib
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY msgs.lib
+LIBRARY fbscli.lib
+LIBRARY imcm.lib
+LIBRARY efsrv.lib
+LIBRARY sendas2.lib
+LIBRARY etext.lib
+LIBRARY smcm.lib
+
+LIBRARY gsmu.lib
+LIBRARY esock.lib
+LIBRARY smsu.lib
+LIBRARY TestExecuteUtils.lib
+LIBRARY TestExecuteLogClient.lib
+LIBRARY SmokeTest_Utils.lib
+LIBRARY etelmm.lib
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Group/bld.inf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Group/bld.inf Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,27 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Integration test system build description file for self test suite
+//
+//
+
+PRJ_TESTEXPORTS
+
+../Scripts/Smoketest_CreateSmsAccount.script z:/smoketest/smoketest_createsmsaccount.script
+../Scripts/setup_Smoketest_Mess.script z:/smoketest/setup_smoketest_mess.script
+../Scripts/Smoketest_Mess.script z:/smoketest/smoketest_mess.script
+../TestData/Sms/Message1.txt z:/smoketest/sms/message1.txt
+../TestData/Smoketest_Mess.ini z:/smoketest/smoketest_mess.ini
+
+PRJ_TESTMMPFILES
+Smoketest_Mess.mmp
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMess.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMess.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,26 @@
+// Copyright (c) 2005-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMess which contains common constants
+//
+//
+
+#if (!defined __TEST_MESS_H__)
+#define __TEST_MESS_H__
+
+/*@{*/
+/// Literals defined for SMS account details
+_LIT(KSmsAccountName, "Short Message");
+/*@}*/
+
+#endif /* __TEST_MESS_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,126 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessBase which is the base class for all
+// messaging test steps
+//
+//
+
+
+#if (!defined __TEST_MESS_BASE_H__)
+#define __TEST_MESS_BASE_H__
+
+#include "Configuration.cfg"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "TestMessProcessor.h"
+#include "TestMessTimer.h"
+
+#include
+#include
+#include
+#if (defined CDMA_API_ENABLED)
+#include
+#include
+#endif
+#include
+
+#include
+//To check whether the reply quoted is set
+_LIT(KReplyQuoted, "SmsReplyQuoted");
+
+const TUid KUidMsvSMSHeaderStream = {0x10001834};
+const TUid KUidMsgFileInternetAccessPreferences = {0x1000924B};
+const TUid KUidMsvDefaultServices = {0x100017FD};
+
+const TInt KOneSecond = 1000000;
+
+class CParaFormatLayer;
+class CCharFormatLayer;
+class CRichText;
+
+class CTestMessBase : public CTestStepSmokeTest, private MMsvSessionObserver
+ {
+public:
+ CTestMessBase(TBool aSetDirectory);
+ virtual ~CTestMessBase();
+
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepPostambleL();
+
+ void SetEntryL(TMsvId aId);
+ CMsvEntry& EntryL();
+ TBool HasEntry() const { return iEntry!=NULL; }
+ const TMsvSelectionOrdering& SelectionOrdering() const { return iOrder; }
+ CMsvSession& Session() const { return *iSession; }
+ void PrintEntryL(CMsvEntry& aEntry);
+ CEmsPreDefSoundIE* NewPreDefSoundL(const TDesC& aPreDefType);
+
+
+protected:
+ // MMsvSessionObserver
+ void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*);
+
+ // Utilities
+ static HBufC8* CopyToBuf8LC(const TDesC& aPtrC);
+ static HBufC* CopyToBufLC(const TDesC8& aPtr8);
+ void PrintTreeL(TMsvId aRoot);
+ void IssueTimerRequest();
+
+
+ void PrepareSmsHeaderFromIniFileL(CSmsHeader& aSmsHeader);
+
+ //reads the schedule time from ini file
+ TTimeIntervalMinutes ReadScheduleTime();
+
+private:
+ // PrintEntry helper functions
+ void PrintStoreL(CMsvEntry& aEntry);
+ void PrintStoreSmtpL(CMsvEntry& aEntry);
+ void PrintStorePop3L(CMsvEntry& aEntry);
+ void PrintStoreImap4L(CMsvEntry& aEntry);
+ void PrintStoreSmsL(CMsvEntry& aEntry);
+
+ // PrepareSmsHeaderFromIniFileL helper functions
+ void SetAlignmentFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aAlignment);
+ void SetFontSizeFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aFontSize);
+
+ CEmsPreDefAnimationIE* NewPreDefAnimationL(const TDesC& aPreDefType);
+ CFbsBitmap* NewBitmapL(const TParse& aFileName, const TDesC& aObjectSize);
+
+protected:
+ CMsvSession* iSession;
+ CTestMessProcessor* iMessageProcessor;
+ CParaFormatLayer* iParaFormatLayer;
+ CCharFormatLayer* iCharFormatLayer;
+ CRichText* iBodyText;
+ TBool iBodyAvailable;
+
+
+private:
+ TBool iCheckForSim;
+ TBool iSetDirectory;
+ CTestMessTimer* iMessageTimer;
+ CActiveScheduler* iSchedular;
+ CMsvEntry* iEntry;
+ TMsvSelectionOrdering iOrder;
+ };
+
+#endif /* __TEST_MESS_BASE_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCleanMessageFolder.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCleanMessageFolder.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,38 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessCleanMessageFolder which cleans out all the
+// message folders
+//
+//
+
+#if (!defined __TEST_MESS_CLEAN_MESSAGE_FOLDER_H__)
+#define __TEST_MESS_CLEAN_MESSAGE_FOLDER_H__
+
+#include "TestMessBase.h"
+
+class CTestMessCleanMessageFolder : public CTestMessBase
+{
+public:
+ CTestMessCleanMessageFolder();
+
+ virtual TVerdict doTestStepL();
+
+private:
+ void CleanFolders(const TMsvId aEntryId);
+
+private:
+ TInt iNumberOfMessagesToDelete;
+};
+
+#endif /* __TEST_MESS_CLEAN_MESSAGE_FOLDER_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCreateCdmaSmsUtil.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCreateCdmaSmsUtil.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,56 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This class creates a Cdma sms header and service settings. It sets the fields by reading
+// from the ini file
+//
+//
+
+
+#if (!defined __TEST_MESS_CREATE_CDMA_SMS_UTIL_H__)
+#define __TEST_MESS_CREATE_CDMA_SMS_UTIL_H__
+
+#include "TestMessCreateSmsUtilBase.h"
+
+/**
+ This class creates a Cdma sms header and service settings.It sets the fields by reading
+ from the ini file
+*/
+class CTestMessCreateCdmaSmsUtil : public CTestMessCreateSmsUtilBase
+{
+public:
+ //Constructor
+ CTestMessCreateCdmaSmsUtil(CTestMessBase &aTestStep);
+
+ //Creates a new header
+ CSmsHeader* NewHeaderL(CRichText &aBodyText);
+
+ //Sets the fields of the header
+ void PrepareHeaderL(CSmsHeader &aSmsHeader);
+
+ //Sets the account settings.
+ void SetSmsAccountSettings(CSmsSettings &aSmsSettings);
+
+private:
+ //Gets the message type of the SMS
+ TSmsMessageType GetMessageTypeId(TPtrC aMessageType);
+
+ //Gets the tele service ID
+ tia637::TTeleserviceId GetTeleServiceId(TPtrC aTeleService);
+
+ //Gets the message conversion ID
+ TSmsPIDConversion GetMessageConversionId(TPtrC aMessageConversion);
+
+};
+
+#endif /* __TEST_MESS_CREATE_CDMA_SMS_UTIL_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCreateGsmSmsUtil.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCreateGsmSmsUtil.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,56 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This class creates the Gsm sms header and service settings. It fills up the
+// fields using data read from the ini file
+//
+//
+
+
+#if (!defined __TEST_MESS_CREATE_GSM_SMS_UTIL_H__)
+#define __TEST_MESS_CREATE_GSM_SMS_UTIL_H__
+
+#include "TestMessCreateSmsUtilBase.h"
+
+/**
+ This class creates the Gsm sms header and the GSM SMS service settings.
+ The data is read from the ini file.
+*/
+class CTestMessCreateGsmSmsUtil : public CTestMessCreateSmsUtilBase
+ {
+public:
+ //Constructor
+ CTestMessCreateGsmSmsUtil(CTestMessBase &aTestStep);
+
+ /**
+ Prepare sms account details
+ */
+ virtual void PrepareAccountL(CMsvSession& aSession);
+
+ /**
+ Creates the new header object
+ */
+ virtual CSmsHeader* NewHeaderL(CRichText &aBodyText);
+
+ /**
+ Fills up the fields of the sms header object
+ */
+ virtual void PrepareHeaderL(CSmsHeader &aSmsHeader);
+
+ /**
+ Fills up the fields of the sms account settings
+ */
+ virtual void SetSmsAccountSettings(CSmsSettings &aSmsSettings);
+ };
+
+#endif /* __TEST_MESS_CREATE_GSM_SMS_UTIL_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCreateSMS.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCreateSMS.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,64 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessCreateSMS. This class creates the sms message
+// for GSM or CDMA. For CDMA mtm, it uses utility classes to create
+// the respective GSM or CDMA sms message
+//
+//
+
+#if (!defined __TEST_MESS_CREATE_SMS_H__)
+#define __TEST_MESS_CREATE_SMS_H__
+
+//Epoc include
+#include
+#include
+#include
+#include
+
+#include "TestMessBase.h"
+#include "TestMessCreateSmsUtilBase.h"
+
+/**
+ This class creates the sms message for GSM or CDMA. For CDMA mtm, it
+ uses utility classes to create the respective GSM or CDMA sms message
+*/
+class CTestMessCreateSMS : public CTestMessBase
+, private MTestActiveCallback
+ {
+public:
+ CTestMessCreateSMS();
+
+ virtual TVerdict doTestStepPreambleL();
+ virtual TVerdict doTestStepL();
+
+protected:
+ virtual void AddMtmCapabilitiesL(RSendAs& aSendAs);
+ virtual void PrepareSendAsL(RSendAsMessage& aSendAs);
+ virtual void PrepareHeaderL(CTestMessCreateSmsUtilBase& aCreateUtil, CSmsHeader& aSmsHeader);
+ void ConCatMessageTextL(CSmsHeader& aHeader);
+ void CreateSmsL(const TMsvId aMsvId, TTimeIntervalMinutes aScheduledTime);
+
+private:
+ virtual void RunL() { CActiveScheduler::Stop(); }
+ /**
+ * Method from which CTestActive informs the user DoCancel call
+ */
+ virtual void DoCancel() { }
+
+private:
+ TBool iSimInDatabase;
+ RMobilePhone::TMobileAddress iSimPhoneNumber;
+ };
+
+#endif /* __TEST_MESS_CREATE_SMS_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCreateSMSaccount.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCreateSMSaccount.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,36 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestMessCreateSmsAccount.cpp
+// This contains CTestMessCreateSmsAccount which creates an SMS
+// account folder for GSM or CDMA
+//
+//
+
+#if (!defined __TEST_MESS_CREATE_SMS_ACCOUNT_H__)
+#define __TEST_MESS_CREATE_SMS_ACCOUNT_H__
+
+#include "TestMessBase.h"
+
+/**
+ This class creates an SMS account folder for GSM or CDMA
+*/
+class CTestMessCreateSmsAccount : public CTestMessBase
+ {
+public:
+ CTestMessCreateSmsAccount();
+
+ virtual TVerdict doTestStepL();
+ };
+
+#endif /* __TEST_MESS_CREATE_SMS_ACCOUNT_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessCreateSmsUtilBase.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessCreateSmsUtilBase.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,81 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This class is the base class for create CDMA or GSM SMS utility class
+//
+//
+
+#if (!defined __TEST_MESS_CREATE_SMS_UTIL_BASE_H__)
+#define __TEST_MESS_CREATE_SMS_UTIL_BASE_H__
+
+#include "TestMessBase.h"
+
+// EPOC includes
+#include
+#include
+
+#include
+
+/*@{*/
+_LIT(KBearer, "bearer");
+_LIT(KEncoding, "encoding");
+_LIT(KDef, "default");
+_LIT(KDefBearer, "smsbearer");
+_LIT(KDefEncoding, "smsencoding");
+_LIT(KDefDeliveryReport, "smsDeliveryReport");
+_LIT(KDeliveryReport, "DeliveryReport");
+_LIT(KRejectDuplicate, "SmsRejectDuplicate");
+_LIT(KReplyPath, "SmsReplyPath");
+_LIT(KConCatenate, "SmsConCatenate");
+
+_LIT(KBearerWap, "wap");
+_LIT(KBearerWapSecure, "wapsecure");
+/*@}*/
+
+/**
+ This class is the base class for create GSM or CDMA SMS utility classes
+*/
+class CTestMessCreateSmsUtilBase : public CBase
+ {
+public:
+ //Constructor
+ CTestMessCreateSmsUtilBase(CTestMessBase &aTestStep);
+
+ /**
+ Prepare sms account details
+ */
+ virtual void PrepareAccountL(CMsvSession& aSession) = 0;
+
+ /**
+ Creates the new header object
+ */
+ virtual CSmsHeader* NewHeaderL(CRichText &aBodyText) = 0;
+
+ /**
+ Fills up the fields of the sms header object
+ */
+ virtual void PrepareHeaderL(CSmsHeader &aSmsHeader) =0;
+
+ /**
+ Fills up the fields of the sms account settings
+ */
+ virtual void SetSmsAccountSettings(CSmsSettings &aSmsSettings) =0;
+
+protected:
+ /**
+ Reference to the test step which creates the utility class
+ */
+ CTestMessBase& iTestStep;
+ };
+
+#endif /* __TEST_MESS_CREATE_SMS_UTIL_BASE_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessEditEntry.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessEditEntry.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,64 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessEditEntry which edits the entry characterstics
+//
+//
+
+
+#if (!defined __TEST_MESS_EDIT_ENTRY_H__)
+#define __TEST_MESS_EDIT_ENTRY_H__
+
+#include "TestMessProcessExistingMsg.h"
+
+/**
+ This class edits the entry characteristics
+*/
+class CTestMessEditEntry : public CTestMessProcessExistingMsg
+{
+public:
+ CTestMessEditEntry() { SetTestStepName(_L("EditEntry")); }
+
+ virtual void ProcessMessageL(CBaseMtm& aBaseMtm, TMsvId aMsgId);
+
+ //Move the message to different folder
+ void MoveMessageL(TMsvId aMessageId,TMsvId aFolderId);
+
+ /**
+ This class is used for asynchronous operation for move
+ message operation
+ */
+ class CMoveOperation: public CActive
+ {
+ public:
+ //Pure virtual implementation of CActive
+ void RunL();
+
+ //Pure virtual implementation of CActive
+ void DoCancel();
+
+ //Set the operation as active
+ void SetOperation();
+
+ //Two phase construction
+ static CMoveOperation* NewL();
+ private:
+ //Second phase construction
+ void ConstructL();
+
+ //Constructor
+ CMoveOperation();
+ };
+};
+
+#endif /* __TEST_MESS_EDIT_ENTRY_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessEditEntryUtil.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessEditEntryUtil.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,54 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessEditEntryUtil. A utility to edit an entry
+//
+//
+
+#if (!defined __TEST_MESS_EDIT_ENTRY_UTIL_H__)
+#define __TEST_MESS_EDIT_ENTRY_UTIL_H__
+
+#include "TestMessStoreProcessUtil.h"
+
+/**
+ This class is a utility to edit an entry
+*/
+class CTestMessEditEntryUtil : public CTestMessStoreProcessUtil
+{
+public:
+ CTestMessEditEntryUtil(CTestMessBase& aTestStep, TBool aSimChecked, TBool aSimInDatabase, RMobilePhone::TMobileAddress aSimPhoneNumber);
+
+protected:
+ // Process the CImHeader information
+ virtual void ProcessImHeaderL(CImHeader& aHeader);
+
+ // Process the CImMimeHeader information
+ virtual void ProcessImMimeHeaderL(CImMimeHeader& aHeader);
+
+ // Process the CImIAPPreferences information
+ virtual void ProcessInternetAccessPreferencesL(CImIAPPreferences& aPreferences);
+
+ // Process the CSmsHeader information
+ virtual void ProcessSmsHeaderStreamL(CSmsHeader& aHeader);
+
+
+ // Process the CRichText information
+ virtual void ProcessRichTextBodyL(CRichText& aBodyText);
+
+private:
+ TBool iSimChecked;
+ TBool iSimInDatabase;
+ RMobilePhone::TMobileAddress iSimPhoneNumber;
+};
+
+#endif /* __TEST_MESS_EDIT_ENTRY_UTIL_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessPrintEntryUtil.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessPrintEntryUtil.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,56 @@
+/**
+* Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* This contains CTestMessEditEntryUtil. A utility to edit an entry
+*
+*
+*/
+
+
+
+
+
+/**
+ @file TestMessPrintEntryUtil.h
+*/
+
+#if (!defined __TEST_MESS_PRINT_ENTRY_UTIL_H__)
+#define __TEST_MESS_PRINT_ENTRY_UTIL_H__
+
+#include "TestMessStoreProcessUtil.h"
+
+class CTestMessPrintEntryUtil : public CTestMessStoreProcessUtil
+{
+public:
+ CTestMessPrintEntryUtil(CTestMessBase& aTestStep);
+
+protected:
+ // Process the CImHeader information
+ virtual void ProcessImHeaderL(CImHeader& aHeader);
+
+ // Process the CImMimeHeader information
+ virtual void ProcessImMimeHeaderL(CImMimeHeader& aHeader);
+
+ // Process the CImIAPPreferences information
+ virtual void ProcessInternetAccessPreferencesL(CImIAPPreferences& aPreferences);
+
+ // Process the CSmsHeader information
+ virtual void ProcessSmsHeaderStreamL(CSmsHeader& aHeader);
+
+
+ // Process the CRichText information
+ virtual void ProcessRichTextBodyL(CRichText& aBodyText);
+};
+
+#endif /* __TEST_MESS_PRINT_ENTRY_UTIL_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessProcessExistingMsg.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessProcessExistingMsg.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,43 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestMessProcessExistingMsg.cpp
+// This contains CTestMessProcessExistingMsg
+// Base class for processing an existing message
+//
+//
+
+#if (!defined __TEST_MESS_PROCESS_EXISTING_MSG__)
+#define __TEST_MESS_PROCESS_EXISTING_MSG__
+
+#include "TestMessBase.h"
+
+#include
+
+class CTestMessProcessExistingMsg : public CTestMessBase
+{
+public:
+ CTestMessProcessExistingMsg();
+
+ virtual TVerdict doTestStepL();
+
+protected:
+ virtual void ProcessMessageL(CBaseMtm& aBaseMtm, TMsvId aMsgId) = 0;
+ virtual void PostProcessMessageL();
+ TUid MtmID() const { return iMtmID; }
+
+private:
+ TUid iMtmID;
+};
+
+#endif /* __TEST_MESS_PROCESS_EXISTING_MSG__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessProcessor.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessProcessor.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,86 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestMessProcessor.cpp
+// This contains CTestMessProcessor which an active object utility
+// used for send/recieving or any time consuming
+//
+//
+
+#if (!defined __TEST_MESS_PROCESSOR_H__)
+#define __TEST_MESS_PROCESSOR_H__
+
+//Epoc Include
+#include
+#include
+#include
+
+class CTestStep;
+
+class MTestMessProcessorClient
+ {
+public:
+ virtual TBool MoreOperations() const = 0;
+ virtual CMsvOperation* CreateOperationL(TRequestStatus& aStatus) = 0;
+ virtual TInt DisplayProgressL(TBool aFinalProgress, CMsvOperation* aMsvOperation) = 0;
+ };
+
+/**
+ This class is an active object utility used for send/recieving
+ or any time consuming
+*/
+class CTestMessProcessor : public CActive
+ {
+public:
+ virtual ~CTestMessProcessor();
+ static CTestMessProcessor* NewL(CTestStep& aTestStep, CMsvSession& aSession);
+
+ void RunL();
+
+ void DisplayProgress();
+ void SendEmailMessageL(TMsvId aMsgId, MTestMessProcessorClient* aClient);
+
+ //Sends the SMS message
+ void SendSmsMessageL(TMsvId aMsgId, MTestMessProcessorClient* aClient, TBool aCancelSms);
+ void SendMmsMessageL(TMsvId aMsgId, MTestMessProcessorClient* aClient);
+ void MtmRequestL(TMsvId aAccountId, MTestMessProcessorClient* aClient);
+
+protected:
+ CTestMessProcessor(CTestStep& aTestStep, CMsvSession& aSession /*, MTestInstrumentation& aInstrumentation */);
+ void ConstructL();
+ void DoCancel();
+
+private:
+ enum EState
+ {
+ EStatePrepareToSendMsg,
+ EStateRequest,
+ };
+
+ EState iState;
+ CTestStep& iTestStep;
+ CMsvSession& iSession;
+
+ // Send message parameters saved for RunL
+ CMsvEntry* iEntry;
+ TMsvId iMsgId;
+ MTestMessProcessorClient* iClient;
+ TMsvEntry iMsgEntry;
+ CMsvOperation* iMsvOperation;
+ /**
+ Boolean value for the Cancel sms flag
+ */
+ TBool iCancelSms;
+};
+
+#endif /* __TEST_MESS_PROCESSOR_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessServer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessServer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,45 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessServer
+//
+//
+
+#if (!defined __TEST_MESS_SERVER_H_)
+#define __TEST_MESS_SERVER_H_
+
+#include "TestMessWatcher.h"
+#include "TestMessSharedData.h"
+
+#include
+
+class CMsvSession;
+
+class CTestMessServer : public CTestServer
+{
+public:
+ static CTestMessServer* NewL();
+ virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+ ~CTestMessServer();
+ CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const;
+protected:
+ CTestMessServer();
+ void ConstructL(const TDesC& aName);
+
+private:
+
+private:
+ CTestMessSharedData* iSharedData;
+};
+
+#endif /* __TEST_MESS_SERVER_H_ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessSession.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessSession.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,35 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessSession
+//
+//
+
+#if (!defined __TEST_MESS_SESSION_H__)
+#define __TEST_MESS_SESSION_H__
+
+#include
+#include "TestMessSharedData.h"
+
+class CTestMessSession : public CTestSession
+{
+public:
+ CTestMessSession(CTestMessSharedData* aSharedData);
+ virtual void ServiceL(const RMessage2& aMessage);
+
+
+private:
+ CTestMessSharedData* iSharedData;
+};
+
+#endif /* __TEST_MESS_SESSION_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessSetDefaultSc.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessSetDefaultSc.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,33 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestMessSetDefaultSc.cpp
+// This contains TestMessSetDefaultSc which sets an SMS
+// SC as default SC.
+//
+//
+
+#if (!defined __TEST_MESS_SET_DEFAULT_SC_H__)
+#define __TEST_MESS_SET_DEFAULT_SC_H__
+
+#include "TestMessBase.h"
+
+class CTestMessSetDefaultSc : public CTestMessBase
+{
+public:
+ CTestMessSetDefaultSc();
+
+ virtual TVerdict doTestStepL();
+};
+
+#endif /* __TEST_MESS_SET_DEFAULT_SC_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessSharedData.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessSharedData.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,102 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessSharedData
+//
+//
+
+#if (!defined __TEST_MESS_SHARED_DATA_H__)
+#define __TEST_MESS_SHARED_DATA_H__
+
+#include
+#include
+#include
+#include
+
+class CTestMessSharedData : public CBase, private MMsvSessionObserver
+{
+public:
+ static CTestMessSharedData* NewL();
+ ~CTestMessSharedData();
+
+ void IMAP4ConnectAndSyncCompleteAfterDisconnectL(TUid aMtmId, TMsvId aMsvId, CTestStep& aStep);
+ TInt DeleteEntryL(CTestStep& aStep);
+
+ void DoProcessL();
+
+protected:
+ CTestMessSharedData();
+
+private:
+ void ConstructL();
+
+ // MMsvSessionObserver implementation
+ virtual void HandleSessionEventL(TMsvSessionEvent, TAny*, TAny*, TAny*) {}
+
+private:
+ class CMsgEntry : public CActive
+ {
+ public:
+ ~CMsgEntry();
+
+ virtual void DoCancel();
+ virtual void RunL();
+ virtual void DoProcessL(CClientMtmRegistry& aMtmRegistry) = 0;
+ virtual void DoCancelProcessL() = 0;
+
+ protected:
+ CMsgEntry(CMsgEntry* aList);
+
+ void ConstructL(CTestStep& aStep);
+
+ public:
+ TName iName;
+ CMsgEntry* iNext;
+ TBool iReadyToBeDeleted;
+ };
+ class CMsgIMAP4ConnectAndSyncComplete : public CMsgEntry, public MMsvImapConnectionObserver
+ {
+ public:
+ static CMsgIMAP4ConnectAndSyncComplete* NewL(TUid aMtmId, TMsvId aMsvId, CTestStep& aStep, CMsgEntry* aList);
+ ~CMsgIMAP4ConnectAndSyncComplete();
+
+ virtual void RunL();
+ virtual void DoProcessL(CClientMtmRegistry& aMtmRegistry);
+ virtual void DoCancelProcessL();
+
+ protected:
+ CMsgIMAP4ConnectAndSyncComplete(TUid aMtmId, TMsvId aMsvId, CMsgEntry* aList);
+
+ private:
+ // MMsvImapConnectionObserver implementation
+ void HandleImapConnectionEvent(TImapConnectionEvent aConnectionEvent);
+
+ private:
+ TUid iMtmId;
+ TMsvId iMsvId;
+ CBaseMtm* iBaseMtm;
+ CMsvOperation* iOperation;
+
+ };
+
+public:
+ CMsvSession* iSession;
+ CClientMtmRegistry* iMtmRegistry;
+ CMsgEntry* iList;
+
+private:
+ CMsgEntry* iAnyPostStepToDo;
+ TBool iDeleteTestStep;
+};
+
+#endif /* __TEST_MESS_SHARED_DATA_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessStoreProcessUtil.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessStoreProcessUtil.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,83 @@
+/**
+* Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* This contains CTestMessStoreProcessUtil. Base class process what is in the message store
+*
+*
+*/
+
+
+
+
+
+/**
+ @file TestMessStoreProcessUtil.h
+*/
+
+#if (!defined __TEST_MESS_STORE_PROCESS_UTIL_H__)
+#define __TEST_MESS_STORE_PROCESS_UTIL_H__
+
+#include "TestMessBase.h"
+
+class CTestMessStoreProcessUtil : public CBase
+{
+public:
+ CTestMessStoreProcessUtil(CTestMessBase& aTestStep, TBool aReadOnly);
+
+ //
+ TInt ProcessEntryL(TMsvId aMsvId);
+
+protected:
+ // Process the CImHeader information
+ virtual void ProcessImHeaderL(CImHeader& aHeader) = 0;
+
+ // Process the CImMimeHeader information
+ virtual void ProcessImMimeHeaderL(CImMimeHeader& aHeader) = 0;
+
+ // Process the CImIAPPreferences information
+ virtual void ProcessInternetAccessPreferencesL(CImIAPPreferences& aPreferences) = 0;
+
+ // Process the CSmsHeader information
+ virtual void ProcessSmsHeaderStreamL(CSmsHeader& aHeader) = 0;
+
+
+ // Process the CRichText information
+ virtual void ProcessRichTextBodyL(CRichText& aBodyText) = 0;
+
+ // Convert Text to character set information
+ TBool ValidCharacterSetInfo(const TPtrC& aCharacterSetType, TUint &aCharSetVal);
+
+private:
+ // Process the CImHeader information
+ void ProcessImHeaderL(CMsvStore& aStore);
+
+ // Process the CImMimeHeader information
+ void ProcessImMimeHeaderL(CMsvStore& aStore);
+
+
+ // Process the CSmsHeader information
+ void ProcessSmsHeaderStreamL(CMsvStore& aStore);
+
+
+ // Process the CRichText information
+ void ProcessRichTextBodyL(CMsvStore& aStore);
+
+protected:
+ CTestMessBase& iTestStep;
+
+private:
+ TBool iReadOnly;
+};
+
+#endif /* __TEST_MESS_STORE_PROCESS_UTIL_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessTimer.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessTimer.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,44 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessTimer
+//
+//
+
+#if (!defined __TEST_MESS_TIMER_H_)
+#define __TEST_MESS_TIMER_H_
+
+#include
+
+class CTestMessProcessor;
+
+class CTestMessTimer : public CTimer
+{
+public:
+ virtual ~CTestMessTimer();
+ static CTestMessTimer* NewL(TTimeIntervalMicroSeconds32 aInterval, CTestMessProcessor& aProcessor);
+
+ void RunL();
+
+ void IssueRequest();
+
+protected:
+ CTestMessTimer(TTimeIntervalMicroSeconds32 aInterval, CTestMessProcessor& aProcessor);
+ void ConstructL();
+
+private:
+ TTimeIntervalMicroSeconds32 iInterval;
+ CTestMessProcessor& iProcessor;
+};
+
+#endif /* __TEST_MESS_TIMER_H_ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Inc/TestMessWatcher.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Inc/TestMessWatcher.h Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,45 @@
+// Copyright (c) 2003-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessWatcher which starts the message watchers
+//
+//
+
+#if (!defined __TEST_MESS_WATCHER_H__)
+#define __TEST_MESS_WATCHER_H__
+
+#include
+#include
+
+const TInt KTestUtilsWatcherStarterMin = 5000000;
+
+class CTestMessWatcher : public CActive
+{
+public:
+ static CTestMessWatcher* NewL(TInt aPriority = EPriorityStandard);
+ ~CTestMessWatcher();
+
+private:
+ CTestMessWatcher(TInt aPriority);
+ void RunL();
+ void DoCancel();
+ void ConstructL();
+
+private:
+ RTimer iTimer;
+ RProcess iWatcher;
+ TBool iConstructed;
+ TTimeIntervalMicroSeconds32 iTimeLeft;
+};
+
+#endif /* __TEST_MESS_WATCHER_H__ */
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/ReadMe.doc
Binary file common/tools/ats/smoketest/messaging/ReadMe.doc has changed
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Scripts/Smoketest_CreateSmsAccount.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Scripts/Smoketest_CreateSmsAccount.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,23 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Create SMS account with vodaphone service centre
+//
+LOAD_SUITE Smoketest_Mess_Server
+//
+START_TESTCASE SMOKE_MESS_SMS_0001
+RUN_TEST_STEP 10000 Smoketest_Mess_Server CreateSmsAccount c:\smoketest\smoketest_mess.ini 27029_SmsVodafoneAccount
+END_TESTCASE SMOKE_MESS_SMS_0001
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Scripts/Smoketest_Mess.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Scripts/Smoketest_Mess.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,37 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRINT Run Mesaging smoketest
+//
+LOAD_SUITE Smoketest_Mess_Server
+// Wait for watchers to start
+DELAY 1000
+//
+START_TESTCASE SMOKE_MESS_SMS_0002
+RUN_TEST_STEP 10000 Smoketest_Mess_Server CleanMessageFolder c:\smoketest\Smoketest_mess.ini 27595_SmsCount01
+END_TESTCASE SMOKE_MESS_SMS_0002
+DELAY 500
+//
+RUN_SCRIPT c:\smoketest\Smoketest_CreateSmsAccount.script
+//
+START_TESTCASE SMOKE_MESS_SMS_0003
+RUN_TEST_STEP 10000 Smoketest_Mess_Server SetSmsSc c:\smoketest\Smoketest_mess.ini 27029_SmsVodafoneAccount
+END_TESTCASE SMOKE_MESS_SMS_0003
+DELAY 500
+//
+START_TESTCASE SMOKE_MESS_SMS_0004
+RUN_TEST_STEP 10000 Smoketest_Mess_Server CreateSms c:\smoketest\Smoketest_mess.ini 27584_SmsMessage01
+END_TESTCASE SMOKE_MESS_SMS_0004
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Scripts/setup_Smoketest_Mess.script
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Scripts/setup_Smoketest_Mess.script Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,27 @@
+//
+// 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 the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+RUN_UTILS MkDir c:\smoketest\
+RUN_UTILS MkDir c:\smoketest\sms\
+
+RUN_UTILS CopyFile z:\smoketest\smoketest_mess.ini c:\smoketest\smoketest_mess.ini
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_mess.ini
+RUN_UTILS CopyFile z:\smoketest\sms\message1.txt c:\smoketest\sms\message1.txt
+RUN_UTILS MakeReadWrite c:\smoketest\sms\message1.txt
+RUN_UTILS CopyFile z:\smoketest\smoketest_createsmsaccount.script c:\smoketest\smoketest_createsmsaccount.script
+RUN_UTILS MakeReadWrite c:\smoketest\smoketest_createsmsaccount.script
+
+// RUN_SCRIPT c:\Smoketest\Smoketest_Mess.script
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Src/TestMessBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Src/TestMessBase.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,1518 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestCase which is the base class for all the TestCase DLLs
+//
+//
+
+#include "Configuration.cfg"
+
+#include "TestMessBase.h"
+#include "TestMessProcessor.h"
+#include "TestMessTimer.h"
+#include "TestMessPrintEntryUtil.h"
+
+// EPOC includes
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#ifdef __MESSAGING_API_V2__
+#include
+#include
+#include
+#include
+#endif
+/**
+ * @name Constant Literals used.
+ */
+/*@{*/
+_LIT(KDepth, "depth");
+_LIT(KFolder, "folder%d");
+
+/// Default value for depth of the count
+#define KDefaultDepthCount 1
+
+/// Default value for depth of the count
+#define KDefaultDepthCount 1
+
+_LIT(KDefault, "default");
+
+_LIT(KScheduled, "scheduled");
+_LIT(KProgress, "progress");
+
+//_LIT(KIap, "iap");
+//_LIT(KIapName, "iapname");
+
+_LIT(KElements, "elements");
+_LIT(KStartPosition, "StartPosition%d");
+_LIT(KFile, "File%d");
+_LIT(KType, "Type%d");
+_LIT(KTypeFormat, "Format");
+_LIT(KTypeSound, "Sound");
+_LIT(KTypePreDefSound, "PreDefSound");
+_LIT(KTypeAnimation, "Animation");
+_LIT(KTypePreDefAnimation, "PreDefAnimation");
+_LIT(KTypePicture, "Picture");
+_LIT(KTypeUserPrompt, "UserPrompt");
+_LIT(KFormatLength, "FormatLength%d");
+_LIT(KBold, "Bold%d");
+_LIT(KItalic, "Italic%d");
+_LIT(KUnderline, "Underline%d");
+_LIT(KStrikethrough, "Strikethrough%d");
+_LIT(KAlignment, "Alignment%d");
+_LIT(KFontSize, "FontSize%d");
+
+_LIT(KLeftAlign, "LeftAlign");
+_LIT(KRightAlign, "RightAlign");
+_LIT(KCenterAlign, "CenterAlign");
+_LIT(KLangDepend, "LangDepend");
+
+_LIT(KNormal, "Normal");
+_LIT(KLarge, "Large");
+_LIT(KSmall, "Small");
+_LIT(KVariable, "Variable");
+_LIT(KReserved, "Reserved");
+
+_LIT(KEmsPreDef, "emspredef%d");
+
+_LIT(KEmsAnimTypeFlirty, "a0");
+_LIT(KEmsAnimTypeGlad, "a1");
+_LIT(KEmsAnimTypeSceptic, "a2");
+_LIT(KEmsAnimTypeSad, "a3");
+_LIT(KEmsAnimTypeWow, "a4");
+_LIT(KEmsAnimTypeCrying, "a5");
+_LIT(KEmsAnimTypeWinking, "a6");
+_LIT(KEmsAnimTypeLaughing, "a7");
+_LIT(KEmsAnimTypeIndifferent, "a8");
+_LIT(KEmsAnimTypeKissing, "a9");
+_LIT(KEmsAnimTypeConfused, "a10");
+_LIT(KEmsAnimTypeTongueOut, "a11");
+_LIT(KEmsAnimTypeAngry, "a12");
+_LIT(KEmsAnimTypeGlasses, "a13");
+_LIT(KEmsAnimTypeDevil, "a14");
+
+_LIT(KEmsSoundTypeChimesHigh, "s0");
+_LIT(KEmsSoundTypeChimesLow, "s1");
+_LIT(KEmsSoundTypeDing, "s2");
+_LIT(KEmsSoundTypeTaDa, "s3");
+_LIT(KEmsSoundTypeNotify, "s4");
+_LIT(KEmsSoundTypeDrum, "s5");
+_LIT(KEmsSoundTypeClaps, "s6");
+_LIT(KEmsSoundTypeFanFar, "s7");
+_LIT(KEmsSoundTypeChordHigh, "s8");
+_LIT(KEmsSoundTypeChordLow, "s9");
+
+/*
+_LIT(KBioIAP, "IAP");
+_LIT(KBioEmailNotification, "EmailNotification");
+_LIT(KBioBusinessCard, "BusinessCard");
+_LIT(KBioWAPAccessPoint, "WAPAccessPoint");
+_LIT(KBioVCalendar, "VCalendar");
+_LIT(KBioVCard, "VCard");
+_LIT(KBioRingingTones, "RingingTones");
+_LIT(KBioOperatorLogo, "OperatorLogo");
+_LIT(KBioWPRV, "WPRV");
+_LIT(KBioCLILogo, "CLILogo");
+*/
+_LIT(KObjectSize, "ObjectSize%d");
+_LIT(KBody, "body");
+/*@}*/
+
+const TInt KSmallObject = 0;
+const TInt KLargeObject = 1;
+const TInt KVariableObject = 2;
+
+const TInt KDefaultStartPos = 1;
+
+/**
+ * Constructor.
+ * @return - None
+ *
+*/
+CTestMessBase::CTestMessBase(TBool aSetDirectory)
+: CTestStepSmokeTest()
+, iSession(NULL)
+, iMessageProcessor(NULL)
+, iParaFormatLayer(NULL)
+, iCharFormatLayer(NULL)
+, iBodyText(NULL)
+, iBodyAvailable(EFalse)
+, iSetDirectory(aSetDirectory)
+, iMessageTimer(NULL)
+, iSchedular(NULL)
+, iEntry(NULL)
+, iOrder(KMsvGroupByType|KMsvGroupByStandardFolders, EMsvSortById, ETrue)
+ {
+ }
+
+CTestMessBase::~CTestMessBase()
+ {
+ delete iEntry;
+ iEntry=NULL;
+ delete iMessageTimer;
+ iMessageTimer=NULL;
+ delete iMessageProcessor;
+ iMessageProcessor=NULL;
+ delete iSession;
+ iSession=NULL;
+ delete iSchedular;
+ iSchedular=NULL;
+ delete iBodyText;
+ iBodyText=NULL;
+ delete iCharFormatLayer;
+ iCharFormatLayer=NULL;
+ delete iParaFormatLayer;
+ iParaFormatLayer=NULL;
+ }
+
+enum TVerdict CTestMessBase::doTestStepPreambleL()
+ {
+ TVerdict ret=CTestStepSmokeTest::doTestStepPreambleL();
+
+ // Printing to the console and log file
+ const TDesC& stepName=TestStepName();
+ INFO_PRINTF2(_L("%S"), &stepName);
+
+ iSchedular=new (ELeave) CActiveScheduler();
+ CActiveScheduler::Install(iSchedular);
+ iSession=CMsvSession::OpenSyncL(*this);
+
+ // Get progress
+ TInt progress=0;
+ TBool hasProgress=GetIntFromConfig(ConfigSection(), KProgress, progress);
+ if ( !hasProgress )
+ {
+ hasProgress=GetIntFromConfig(KDefault, KProgress, progress);
+ }
+
+ iMessageProcessor=CTestMessProcessor::NewL(*this, *iSession);
+ if ( hasProgress )
+ {
+ iMessageTimer=CTestMessTimer::NewL(progress*KOneSecond, *iMessageProcessor);
+ }
+
+ if ( iSetDirectory )
+ {
+ TInt depth=KDefaultDepthCount;
+ TBool returnValue=GetIntFromConfig(ConfigSection(), KDepth, depth);
+ if ( !returnValue )
+ {
+ depth=KDefaultDepthCount;
+ }
+ INFO_PRINTF2(_L("Depth = %d"), depth);
+
+ // Searce for the entry
+ TRAPD(error,SetEntryL(KMsvRootIndexEntryId));
+ if( error != KErrNone)
+ {
+ INFO_PRINTF2(_L("Set Entry failed, Error %D"),error);
+ SetTestStepError(error);
+ ret=EFail;
+ }
+ else
+ {
+
+ TBuf tempStore;
+ TBool found=ETrue;
+ for (TInt entry=0; entryCount();
+
+ found=EFalse;
+ for (TInt i=count; i>0 && !found; )
+ {
+ TMsvId childId=selection->At(--i);
+
+ SetEntryL(childId);
+ INFO_PRINTF2(_L("Entry Detail : %S"), &(EntryL().Entry().iDetails));
+ INFO_PRINTF2(_L("Entry Description: %S"), &(EntryL().Entry().iDescription));
+ if ( subject.Compare(EntryL().Entry().iDetails) == 0 ||
+ subject.Compare(EntryL().Entry().iDescription) == 0 )
+ {
+ found=ETrue;
+ }
+ }
+ CleanupStack::PopAndDestroy(selection);
+ }
+
+ if ( !found )
+ {
+ ERR_PRINTF1(_L("Folder not found"));
+ ret=EFail;
+ }
+ }
+ }
+ if (TestStepResult() == EPass)
+ {
+ //Get body(file path) from ini file and read respective file. Store it into CRichText format.
+ iParaFormatLayer=CParaFormatLayer::NewL();
+ iCharFormatLayer=CCharFormatLayer::NewL();
+ iBodyText=CRichText::NewL(iParaFormatLayer, iCharFormatLayer);
+ iBodyAvailable=EFalse;
+
+ TPtrC body;
+ if(GetStringFromConfig(ConfigSection(), KBody, body))
+ {
+ INFO_PRINTF2(_L("Body = %S"), &body);
+ iBodyAvailable=ETrue;
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No Body"));
+ }
+
+ if ( iBodyAvailable )
+ {
+ // open the file
+ RFile file;
+
+ TInt anError = file.Open(iSession->FileSession(), body, EFileShareAny);
+ if(anError == KErrNone)
+ {
+ TBool reading=ETrue;
+ TInt pos=0;
+ TBuf8<1> charIn;
+ while (reading)
+ {
+ file.Read(charIn, 1);
+ if(charIn.Length())
+ {
+ switch ( charIn[0] )
+ {
+ case '\r':
+ iBodyText->InsertL(pos++, CEditableText::ELineBreak);
+ case '\n':
+ break;
+ default:
+ iBodyText->InsertL(pos++, TChar(charIn[0]));
+ }
+ }
+ else
+ {
+ reading = EFalse; // stop at the end of the file
+ }
+ }
+ iBodyAvailable=ETrue;
+ file.Close();
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Cannot open file = %S"), &body);
+ iBodyAvailable=EFalse;
+ }
+ }//End of read file.
+ }
+
+ SetTestStepResult(ret);
+ return ret;
+ }
+
+enum TVerdict CTestMessBase::doTestStepPostambleL()
+ {
+ delete iEntry;
+ iEntry=NULL;
+ delete iMessageTimer;
+ iMessageTimer=NULL;
+ delete iMessageProcessor;
+ iMessageProcessor=NULL;
+ delete iSession;
+ iSession=NULL;
+ delete iSchedular;
+ iSchedular=NULL;
+ CActiveScheduler::Install(NULL);
+ return CTestStepSmokeTest::doTestStepPostambleL();
+ }
+
+void CTestMessBase::SetEntryL(TMsvId aId)
+ {
+ delete iEntry;
+ iEntry=NULL;
+ iEntry=iSession->GetEntryL(aId);
+ }
+
+CMsvEntry& CTestMessBase::EntryL()
+ {
+ if ( iEntry == NULL )
+ {
+ User::Leave(KErrGeneral);
+ }
+
+ return *iEntry;
+ }
+
+
+HBufC8* CTestMessBase::CopyToBuf8LC(const TDesC& aDesC)
+//
+// @return - HBufC8*
+// Converts TDesC to HBufC8*.
+//
+ {
+ HBufC8* itemBuff8 = HBufC8::NewLC(aDesC.Length());
+ itemBuff8->Des().Copy(aDesC);
+
+ return itemBuff8;
+ }
+
+HBufC* CTestMessBase::CopyToBufLC(const TDesC8& aDesC)
+//
+// @return - HBufC8*
+// Converts TDesC to HBufC8*.
+//
+ {
+ HBufC* itemBuff = HBufC::NewLC(aDesC.Length());
+ itemBuff->Des().Copy(aDesC);
+
+ return itemBuff;
+ }
+
+
+#ifndef __MESSAGING_API_V2__
+void CTestMessBase::SetDefaultServiceL(TUid aMtm, TMsvId aService) const
+ {
+ // --- Now restore the default services from the root store ---
+ CMsvEntry* rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
+ CleanupStack::PushL(rootEntry);
+ CMsvStore* store = rootEntry->EditStoreL();
+ CleanupStack::PushL(store);
+ CMsvDefaultServices* services = new(ELeave)CMsvDefaultServices;
+ CleanupStack::PushL(services);
+ services->RestoreL(*store);
+
+ // --- And now re-set the default service for the MTM to the one given ---
+ TMsvDefaultService defaultService;
+ defaultService.iMtm=aMtm;
+ defaultService.iService=aService;
+ services->ChangeDefaultServiceL(defaultService);
+ services->StoreL(*store);
+ store->CommitL();
+ CleanupStack::PopAndDestroy(3, rootEntry);
+ }
+
+TInt CTestMessBase::DefaultServiceL(TUid aMtm, TMsvId& aService) const
+ {
+ // --- Now restore the default services from the root store ---
+ CMsvEntry* rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
+ CleanupStack::PushL(rootEntry);
+ CMsvStore* store=rootEntry->ReadStoreL();
+ CleanupStack::PushL(store);
+ CMsvDefaultServices* services=new(ELeave)CMsvDefaultServices;
+ CleanupStack::PushL(services);
+ services->RestoreL(*store);
+
+ TInt ret=services->DefaultService(aMtm, aService);
+
+ CleanupStack::PopAndDestroy(3, rootEntry);
+
+ return ret;
+ }
+#endif
+
+void CTestMessBase::PrintTreeL(TMsvId aRoot)
+ {
+ INFO_PRINTF1(_L("PrintTreeL In"));
+ CMsvEntry* entry=iSession->GetEntryL(aRoot);
+ CleanupStack::PushL(entry);
+ entry->SetSortTypeL(SelectionOrdering());
+ CMsvEntrySelection* selection=entry->ChildrenL();
+ CleanupStack::PushL(selection);
+
+ PrintEntryL(*entry);
+ for (TInt i=0; iCount(); )
+ {
+ PrintTreeL(selection->At(i++));
+ }
+
+ CleanupStack::PopAndDestroy(2, entry);
+ INFO_PRINTF1(_L("PrintTreeL Out"));
+ }
+
+void CTestMessBase::PrintEntryL(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+
+ INFO_PRINTF2(_L("Entry Detail : %S"), &(entry.iDetails));
+ INFO_PRINTF2(_L(" Description: %S"), &(entry.iDescription));
+ INFO_PRINTF2(_L(" Id : %x"), entry.Id());
+ INFO_PRINTF2(_L(" Parent Id : %x"), entry.Parent());
+ INFO_PRINTF2(_L(" Service Id : %x"), entry.iServiceId);
+ if ( entry.iRelatedId != 0 )
+ {
+ INFO_PRINTF2(_L(" Related Id : %x"), entry.iRelatedId);
+ }
+ INFO_PRINTF2(_L(" Type : %x"), entry.iType);
+ INFO_PRINTF2(_L(" Mtm : %x"), entry.iMtm);
+
+
+ if ( entry.iSize != 0 )
+ {
+ INFO_PRINTF2(_L(" Size : %x"), entry.iSize);
+ }
+ if ( entry.iError != 0 )
+ {
+ INFO_PRINTF2(_L(" Error : %d"), entry.iError);
+ }
+ if ( entry.iBioType != 0 )
+ {
+ INFO_PRINTF2(_L(" BioType : %x"), entry.iBioType);
+ }
+ if ( entry.MtmData1() != 0 )
+ {
+ INFO_PRINTF2(_L(" MtmData1 : %x"), entry.MtmData1());
+ }
+ if ( entry.MtmData2() != 0 )
+ {
+ INFO_PRINTF2(_L(" MtmData2 : %x"), entry.MtmData2());
+ }
+ if ( entry.MtmData3() != 0 )
+ {
+ INFO_PRINTF2(_L(" MtmData3 : %x"), entry.MtmData3());
+ }
+ if ( entry.Attachment() != 0 )
+ {
+ INFO_PRINTF2(_L(" Attachment : %x"), entry.Attachment());
+ }
+ if ( entry.Complete() != 0 )
+ {
+ INFO_PRINTF2(_L(" Complete : %x"), entry.Complete());
+ }
+ if ( entry.Connected() != 0 )
+ {
+ INFO_PRINTF2(_L(" Connected : %x"), entry.Connected());
+ }
+ if ( entry.Deleted() != 0 )
+ {
+ INFO_PRINTF2(_L(" Deleted : %x"), entry.Deleted());
+ }
+ if ( entry.Failed() != 0 )
+ {
+ INFO_PRINTF2(_L(" Failed : %x"), entry.Failed());
+ }
+ if ( entry.InPreparation() != 0 )
+ {
+ INFO_PRINTF2(_L(" InPrep : %x"), entry.InPreparation());
+ }
+ if ( entry.MultipleRecipients() != 0 )
+ {
+ INFO_PRINTF2(_L(" MultiRecip : %x"), entry.MultipleRecipients());
+ }
+ if ( entry.OffPeak() != 0 )
+ {
+ INFO_PRINTF2(_L(" OffPeak : %x"), entry.OffPeak());
+ }
+ if ( entry.Operation() != 0 )
+ {
+ INFO_PRINTF2(_L(" Operation : %x"), entry.Operation());
+ }
+ if ( entry.Owner() != 0 )
+ {
+ INFO_PRINTF2(_L(" Owner : %x"), entry.Owner());
+ }
+ if ( entry.PcSyncCount() != 0 )
+ {
+ INFO_PRINTF2(_L(" PcSyncCount: %x"), entry.PcSyncCount());
+ }
+ if ( entry.Priority() != 0 )
+ {
+ INFO_PRINTF2(_L(" Priority : %x"), entry.Priority());
+ }
+ if ( entry.ReadOnly() != 0 )
+ {
+ INFO_PRINTF2(_L(" ReadOnly : %x"), entry.ReadOnly());
+ }
+ if ( entry.Scheduled() != 0 )
+ {
+ INFO_PRINTF2(_L(" Scheduled : %x"), entry.Scheduled());
+ }
+ if ( entry.SendingState() != 0 )
+ {
+ INFO_PRINTF2(_L(" Send State : %x"), entry.SendingState());
+ }
+ if ( entry.StandardFolder() != 0 )
+ {
+ INFO_PRINTF2(_L(" StdFolder : %x"), entry.StandardFolder());
+ }
+ if ( entry.Unread() != 0 )
+ {
+ INFO_PRINTF2(_L(" Unread : %x"), entry.Unread());
+ }
+ if ( entry.Visible() != 0 )
+ {
+ INFO_PRINTF2(_L(" Visible : %x"), entry.Visible());
+ }
+
+#if (!defined CDMA_API_ENABLED)
+ if ( aEntry.HasStoreL() )
+ {
+ PrintStoreL(aEntry);
+ }
+#endif
+ }
+
+void CTestMessBase::PrintStoreL(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+ CTestMessPrintEntryUtil* printUtil=new (ELeave) CTestMessPrintEntryUtil(*this);
+ CleanupStack::PushL(printUtil);
+
+ printUtil->ProcessEntryL(entry.Id());
+ CleanupStack::PopAndDestroy(printUtil);
+
+ if ( entry.iMtm==KUidMsgTypeSMTP )
+ {
+ PrintStoreSmtpL(aEntry);
+ }
+ else if ( entry.iMtm == KUidMsgTypePOP3 )
+ {
+ PrintStorePop3L(aEntry);
+ }
+ else if ( entry.iMtm == KUidMsgTypeIMAP4 )
+ {
+ PrintStoreImap4L(aEntry);
+ }
+ else if ( entry.iMtm == KUidMsgTypeSMS )
+ {
+ PrintStoreSmsL(aEntry);
+ }
+ }
+
+void CTestMessBase::PrintStoreSmtpL(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+ CMsvStore* store=aEntry.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ TPtrC ptrTemp;
+ if ( entry.iType == KUidMsvServiceEntry )
+ {
+ CImSmtpSettings* settings = new(ELeave) CImSmtpSettings();
+ CleanupStack::PushL(settings);
+#ifdef __MESSAGING_API_V2__
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+ TSmtpAccount smtpAccountId;
+ accounts->GetSmtpAccountL(aEntry.EntryId(), smtpAccountId);
+ TRAPD(err, accounts->LoadSmtpSettingsL(smtpAccountId, *settings));
+ CleanupStack::PopAndDestroy(accounts);
+#else
+ TRAPD(err, settings->RestoreL(*store));
+#endif
+ if ( err == KErrNone )
+ {
+ ptrTemp.Set(settings->ServerAddress());
+ INFO_PRINTF2(_L(" ServerAddress : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+ ptrTemp.Set(settings->UserAddress());
+ INFO_PRINTF2(_L(" UserAddress : %S"), &ptrTemp);
+ INFO_PRINTF2(_L(" Version : %x"), (TUint)settings->Version());
+#endif
+ INFO_PRINTF2(_L(" Port : %x"), settings->Port());
+ INFO_PRINTF2(_L(" SecureSockets : %x"), (TUint)settings->SecureSockets());
+ ptrTemp.Set(settings->EmailAlias());
+ INFO_PRINTF2(_L(" EmailAlias : %S"), &ptrTemp);
+ ptrTemp.Set(settings->EmailAddress());
+ INFO_PRINTF2(_L(" EmailAddress : %S"), &ptrTemp);
+ ptrTemp.Set(settings->ReplyToAddress());
+ INFO_PRINTF2(_L(" ReplyToAddress : %S"), &ptrTemp);
+ ptrTemp.Set(settings->ReceiptAddress());
+ INFO_PRINTF2(_L(" ReceiptAddress : %S"), &ptrTemp);
+ if ( settings->RequestReceipts() != 0 )
+ {
+ INFO_PRINTF2(_L(" RequestReceipts : %x"), (TUint)settings->RequestReceipts());
+ }
+ if ( settings->SendCopyToSelf() != 0 )
+ {
+ INFO_PRINTF2(_L(" SendCopyToSelf : %x"), (TUint)settings->SendCopyToSelf());
+ }
+ INFO_PRINTF2(_L(" SendMessageOption : %x"), (TUint)settings->SendMessageOption());
+ }
+ CleanupStack::PopAndDestroy(settings);
+ }
+
+ CleanupStack::PopAndDestroy(store);
+ }
+
+void CTestMessBase::PrintStorePop3L(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+ CMsvStore* store=aEntry.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ TPtrC ptrTemp;
+ if ( entry.iType == KUidMsvServiceEntry )
+ {
+ CImPop3Settings* settings = new(ELeave) CImPop3Settings();
+ CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+ TPopAccount popAccountId;
+ accounts->GetPopAccountL(aEntry.EntryId(), popAccountId);
+ TRAPD(err, accounts->LoadPopSettingsL(popAccountId, *settings));
+ CleanupStack::PopAndDestroy(accounts);
+#else
+ TRAPD(err, settings->RestoreL(*store));
+#endif
+ if ( err == KErrNone )
+ {
+ ptrTemp.Set(settings->ServerAddress());
+ INFO_PRINTF2(_L(" ServerAddress : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+ ptrTemp.Set(settings->UserAddress());
+ INFO_PRINTF2(_L(" UserAddress : %S"), &ptrTemp);
+ INFO_PRINTF2(_L(" Version : %x"), (TUint)settings->Version());
+#endif
+ INFO_PRINTF2(_L(" Port : %x"), settings->Port());
+ INFO_PRINTF2(_L(" SecureSockets : %x"), (TUint)settings->SecureSockets());
+ HBufC* loginName=CopyToBufLC(settings->LoginName());
+ INFO_PRINTF2(_L(" LoginName : %S"), loginName);
+ CleanupStack::PopAndDestroy(loginName);
+ if ( settings->AutoSendOnConnect() != 0 )
+ {
+ INFO_PRINTF2(_L(" AutoSendOnConnect : %x"), (TUint)settings->AutoSendOnConnect());
+ }
+ if ( settings->Apop() != 0 )
+ {
+ INFO_PRINTF2(_L(" Apop : %x"), (TUint)settings->Apop());
+ }
+ if ( settings->DisconnectedUserMode() != 0 )
+ {
+ INFO_PRINTF2(_L(" DisconnectedUserMode : %x"), (TUint)settings->DisconnectedUserMode());
+ }
+ if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
+ {
+ INFO_PRINTF2(_L(" DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
+ }
+ if ( settings->AcknowledgeReceipts() != 0 )
+ {
+ INFO_PRINTF2(_L(" AcknowledgeReceipts : %x"), (TUint)settings->AcknowledgeReceipts());
+ }
+ if ( settings->MaxEmailSize() != 0 )
+ {
+ INFO_PRINTF2(_L(" MaxEmailSize : %x"), (TUint)settings->MaxEmailSize());
+ }
+ if ( settings->GetMailOptions() != 0 )
+ {
+ INFO_PRINTF2(_L(" GetMailOptions : %x"), (TUint)settings->GetMailOptions());
+ }
+ if ( settings->InboxSynchronisationLimit() != 0 )
+ {
+ INFO_PRINTF2(_L(" InboxSynchronisationLimit : %x"), (TUint)settings->InboxSynchronisationLimit());
+ }
+ }
+ CleanupStack::PopAndDestroy(settings);
+ }
+
+ CleanupStack::PopAndDestroy(store);
+ }
+
+void CTestMessBase::PrintStoreImap4L(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+ CMsvStore* store=aEntry.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ TPtrC ptrTemp;
+ if ( entry.iType == KUidMsvServiceEntry )
+ {
+ CImImap4Settings* settings = new(ELeave) CImImap4Settings();
+ CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+ TImapAccount imapAccountId;
+ accounts->GetImapAccountL(aEntry.EntryId(), imapAccountId);
+ TRAPD(err, accounts->LoadImapSettingsL(imapAccountId, *settings));
+ CleanupStack::PopAndDestroy(accounts);
+#else
+ TRAPD(err, settings->RestoreL(*store));
+#endif
+ if ( err == KErrNone )
+ {
+ ptrTemp.Set(settings->ServerAddress());
+ INFO_PRINTF2(_L(" ServerAddress : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+ ptrTemp.Set(settings->UserAddress());
+ INFO_PRINTF2(_L(" UserAddress : %S"), &ptrTemp);
+ INFO_PRINTF2(_L(" Version : %x"), (TUint)settings->Version());
+#endif
+ INFO_PRINTF2(_L(" Port : %x"), settings->Port());
+ INFO_PRINTF2(_L(" SecureSockets : %x"), (TUint)settings->SecureSockets());
+
+ HBufC* loginName=CopyToBufLC(settings->LoginName());
+ INFO_PRINTF2(_L(" LoginName : %S"), loginName);
+ HBufC* folderPath=CopyToBufLC(settings->FolderPath());
+ INFO_PRINTF2(_L(" FolderPath : %S"), folderPath);
+ CleanupStack::PopAndDestroy(2, loginName);
+ if ( settings->PathSeparator() != 0 )
+ {
+ INFO_PRINTF2(_L(" PathSeparator : %c"), (TText)settings->PathSeparator());
+ }
+ if ( settings->DisconnectedUserMode() != 0 )
+ {
+ INFO_PRINTF2(_L(" DisconnectedUserMode : %x"), (TUint)settings->DisconnectedUserMode());
+ }
+ if ( settings->Synchronise() != 0 )
+ {
+ INFO_PRINTF2(_L(" Synchronise : %x"), (TUint)settings->Synchronise());
+ }
+ if ( settings->Subscribe() != 0 )
+ {
+ INFO_PRINTF2(_L(" Subscribe : %x"), (TUint)settings->Subscribe());
+ }
+ if ( settings->AutoSendOnConnect() != 0 )
+ {
+ INFO_PRINTF2(_L(" AutoSendOnConnect : %x"), (TUint)settings->AutoSendOnConnect());
+ }
+ if ( settings->MaxEmailSize() != 0 )
+ {
+ INFO_PRINTF2(_L(" MaxEmailSize : %x"), (TUint)settings->MaxEmailSize());
+ }
+ if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
+ {
+ INFO_PRINTF2(_L(" DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
+ }
+ if ( settings->AcknowledgeReceipts() != 0 )
+ {
+ INFO_PRINTF2(_L(" AcknowledgeReceipts : %x"), (TUint)settings->AcknowledgeReceipts());
+ }
+ if ( settings->GetMailOptions() != 0 )
+ {
+ INFO_PRINTF2(_L(" GetMailOptions : %x"), (TUint)settings->GetMailOptions());
+ }
+ if ( settings->InboxSynchronisationLimit() != 0 )
+ {
+ INFO_PRINTF2(_L(" InboxSynchronisationLimit : %x"), (TUint)settings->InboxSynchronisationLimit());
+ }
+ if ( settings->MailboxSynchronisationLimit() != 0 )
+ {
+ INFO_PRINTF2(_L(" MailboxSynchronisationLimit : %x"), (TUint)settings->MailboxSynchronisationLimit());
+ }
+ }
+ CleanupStack::PopAndDestroy(settings);
+ }
+
+ CleanupStack::PopAndDestroy(store);
+ }
+
+void CTestMessBase::PrintStoreSmsL(CMsvEntry& aEntry)
+ {
+ TMsvEntry entry=aEntry.Entry();
+ CMsvStore* store=aEntry.ReadStoreL();
+ CleanupStack::PushL(store);
+
+ TPtrC ptrTemp;
+ if ( entry.iType == KUidMsvServiceEntry )
+ {
+ CSmsSettings* settings = CSmsSettings::NewL();
+ CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+ CSmsAccount* smsAccount = CSmsAccount::NewLC();
+ TRAPD(err, smsAccount->LoadSettingsL(*settings));
+ CleanupStack::PopAndDestroy(smsAccount);
+#else
+ TRAPD(err, settings->RestoreL(*store));
+#endif
+ if ( err == KErrNone )
+ {
+ TSmsDelivery delivery(settings->Delivery());
+ INFO_PRINTF2(_L(" Delivery : %d"), delivery);
+ CSmsSettings::TSmsReportHandling reportHandling(settings->StatusReportHandling());
+ INFO_PRINTF2(_L(" StatusReportHandling : %d"), reportHandling);
+ CSmsSettings::TSmsReportHandling specialMsgHandling(settings->SpecialMessageHandling());
+ INFO_PRINTF2(_L(" SpecialMessageHandling : %d"), specialMsgHandling);
+ INFO_PRINTF2(_L(" ReplyQuoted : %d"), settings->ReplyQuoted());
+#ifdef __MESSAGING_API_V2__
+ const TInt numSCAddr = settings->ServiceCenterCount();
+#else
+ const TInt numSCAddr = settings->NumSCAddresses();
+#endif
+ for( TInt index=0;indexGetServiceCenter(index);
+#else
+ CSmsNumber& scAddr = settings->SCAddress(index);
+#endif
+ ptrTemp.Set(scAddr.Name());
+ INFO_PRINTF2(_L(" SC Name : %S"), &ptrTemp);
+ ptrTemp.Set(scAddr.Address());
+ INFO_PRINTF2(_L(" SC Address : %S"), &ptrTemp);
+ }
+ CSmsSettings::TSmsSettingsCommDbAction commDbAction(settings->SmsBearerAction());
+ INFO_PRINTF2(_L(" SmsBearerAction : %d"), commDbAction);
+
+ CSmsSettings::TMobileSmsBearer smsBearer(settings->SmsBearer());
+ INFO_PRINTF2(_L(" SmsBearer : %d"), smsBearer);
+ }
+ CleanupStack::PopAndDestroy(settings);
+ }
+
+ CleanupStack::PopAndDestroy(store);
+ }
+
+void CTestMessBase::IssueTimerRequest()
+ {
+ if (iMessageTimer!= NULL)
+ {
+ iMessageTimer->IssueRequest();
+ }
+ }
+
+void CTestMessBase::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny*, TAny*)
+/**
+ Handler for the Session Event
+ @param aEvent - TMsvSessionEvent object
+ @param aArg1 - TAny object pointer, used to store the argument for the event
+ @leave - System wide error codes
+*/
+ {
+ TBool printSelection=EFalse;
+
+ switch (aEvent)
+ {
+ case EMsvEntriesCreated:
+ INFO_PRINTF1(_L("EMsvEntriesCreated"));
+ printSelection=ETrue;
+ break;
+ case EMsvEntriesChanged:
+ INFO_PRINTF1(_L("EMsvEntriesChanged"));
+ printSelection=ETrue;
+ break;
+ case EMsvEntriesDeleted:
+ INFO_PRINTF1(_L("EMsvEntriesDeleted"));
+ break;
+ case EMsvEntriesMoved:
+ INFO_PRINTF1(_L("EMsvEntriesMoved"));
+ printSelection=ETrue;
+ break;
+ case EMsvMtmGroupInstalled:
+ INFO_PRINTF1(_L("EMsvMtmGroupInstalled"));
+ break;
+ case EMsvMtmGroupDeInstalled:
+ INFO_PRINTF1(_L("EMsvMtmGroupDeInstalled"));
+ break;
+ case EMsvGeneralError:
+ INFO_PRINTF1(_L("EMsvGeneralError"));
+ break;
+ case EMsvCloseSession:
+ INFO_PRINTF1(_L("EMsvCloseSession"));
+ break;
+ case EMsvServerReady:
+ INFO_PRINTF1(_L("EMsvServerReady"));
+ break;
+ case EMsvServerFailedToStart:
+ INFO_PRINTF1(_L("EMsvServerFailedToStart"));
+ break;
+ case EMsvCorruptedIndexRebuilt:
+ INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilt"));
+ break;
+ case EMsvServerTerminated:
+ INFO_PRINTF1(_L("EMsvServerTerminated"));
+ break;
+ case EMsvMediaChanged:
+ INFO_PRINTF1(_L("EMsvMediaChanged"));
+ break;
+ case EMsvMediaUnavailable:
+ INFO_PRINTF1(_L("EMsvMediaUnavailable"));
+ break;
+ case EMsvMediaAvailable:
+ INFO_PRINTF1(_L("EMsvMediaAvailable"));
+ break;
+ case EMsvMediaIncorrect:
+ INFO_PRINTF1(_L("EMsvMediaIncorrect"));
+ break;
+ case EMsvCorruptedIndexRebuilding:
+ INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilding"));
+ break;
+ default:
+ INFO_PRINTF2(_L("EMsv Unknown event:%d"), aEvent);
+ break;
+ }
+
+ if ( printSelection )
+ {
+ CMsvEntrySelection* selection=STATIC_CAST(CMsvEntrySelection*, aArg1);
+ CMsvEntry* entry=NULL;
+ for ( int i=0; iCount(); )
+ {
+ entry=iSession->GetEntryL(selection->At(i++));
+ CleanupStack::PushL(entry);
+ PrintEntryL(*entry);
+ CleanupStack::PopAndDestroy(entry);
+ }
+ }
+ }
+
+
+void CTestMessBase::PrepareSmsHeaderFromIniFileL(CSmsHeader& aSmsHeader)
+ {
+ // Starts the Bitmap server
+ FbsStartup();
+ // start the server
+ RFbsSession::Connect();
+
+ // Add the Fromating required for EMS if required
+ TInt emsElements=0;
+ if ( !GetIntFromConfig(ConfigSection(), KElements, emsElements) )
+ {
+ ERR_PRINTF1(_L("Elements not set"));
+ SetTestStepResult(EFail);
+ }
+
+// Macro usage for CDMA mtm
+#if (defined CDMA_API_ENABLED)
+ TMsvMessageSms& message=aSmsHeader.SmsMessage();
+#else
+ CSmsMessage& message=aSmsHeader.Message();
+#endif
+
+ TBuf tempStore;
+ for ( TInt element=0; elementSetStartPosition(startPosition);
+
+ TInt intTemp;
+ TBool boolTemp;
+ TPtrC alignment;
+ TPtrC fontSize;
+
+ // Set the Format length and other information
+ tempStore.Format(KFormatLength, element);
+ if ( GetIntFromConfig(ConfigSection(), tempStore, intTemp) )
+ {
+ INFO_PRINTF2(_L("Format Length %d"), intTemp);
+ newElement->SetFormatLength(intTemp);
+ }
+ tempStore.Format(KBold, element);
+ if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+ {
+ INFO_PRINTF2(_L("Bold %d"), boolTemp);
+ newElement->SetBold(boolTemp);
+ }
+ tempStore.Format(KItalic, element);
+ if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+ {
+ INFO_PRINTF2(_L("Italic %d"), boolTemp);
+ newElement->SetItalic(boolTemp);
+ }
+ tempStore.Format(KUnderline, element);
+ if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+ {
+ INFO_PRINTF2(_L("Underline %d"), boolTemp);
+ newElement->SetUnderline(boolTemp);
+ }
+ tempStore.Format(KStrikethrough, element);
+ if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+ {
+ INFO_PRINTF2(_L("Strikethrough %d"), boolTemp);
+ newElement->SetStrikethrough(boolTemp);
+ }
+ tempStore.Format(KAlignment,element);
+ if(GetStringFromConfig(ConfigSection(),tempStore,alignment))
+ {
+ SetAlignmentFormat(*newElement, alignment);
+ }
+
+ tempStore.Format(KFontSize,element);
+ if(GetStringFromConfig(ConfigSection(),tempStore,fontSize))
+ {
+ //
+ SetFontSizeFormat(*newElement, fontSize);
+ }
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(newElement);
+ }
+ else if ( type.Compare(KTypeSound) == 0 )
+ {
+ // === Process sound Information Element ===
+ if ( hasFile )
+ {
+ HBufC8* buffFile=CopyToBuf8LC(fileName.FullName());
+ CEmsSoundIE* newElement=CEmsSoundIE::NewL(buffFile->Des());
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(2, buffFile);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("No Sound file name"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else if ( type.Compare(KTypePreDefSound) == 0 )
+ {
+ // === Process predefined sound Information Element ===
+ TPtrC preDefSound;
+ tempStore.Format(KEmsPreDef, element);
+ if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefSound))
+ {
+ ERR_PRINTF1(_L("Predefined sound not present"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Predefined sound %S"), &preDefSound);
+ CEmsPreDefSoundIE* newElement=NewPreDefSoundL(preDefSound);
+
+ if ( newElement != NULL )
+ {
+ //Assign the predef animation element to newElement
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(newElement);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Unable to create predefined sound"));
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ else if ( type.Compare(KTypeAnimation) == 0 )
+ {
+ // === Process animation Information Element ===
+ if ( hasFile )
+ {
+ TPtrC objectSize;
+
+ tempStore.Format(KObjectSize, element);
+ if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
+ {
+ ERR_PRINTF1(_L("No size provided"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CFbsBitmap* bmp=NewBitmapL(fileName, objectSize);
+ if ( bmp == NULL )
+ {
+ ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CleanupStack::PushL(bmp);
+ CEmsAnimationIE* newElement=CEmsAnimationIE::NewL(*bmp);
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(2, bmp);
+ }
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("No Animation file name"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else if ( type.Compare(KTypePreDefAnimation) == 0 )
+ {
+ // === Process predefined animation Information Element ===
+ TPtrC preDefAnim;
+ tempStore.Format(KEmsPreDef, element);
+ if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefAnim) )
+ {
+ ERR_PRINTF1(_L("Predefined animations not present"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Predefined animation %S"), &preDefAnim);
+ CEmsPreDefAnimationIE* newElement=NewPreDefAnimationL(preDefAnim);
+
+ if ( newElement != NULL )
+ {
+ //Assign the predef animation element to newElement
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(newElement);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Unable to create predefined animation"));
+ SetTestStepResult(EFail);
+ }
+ }
+ }
+ else if ( type.Compare(KTypePicture) == 0 )
+ {
+ // === Process picture Information Element ===
+ if ( hasFile )
+ {
+ TPtrC objectSize;
+
+ tempStore.Format(KObjectSize, element);
+ if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
+ {
+ ERR_PRINTF1(_L("No size provided"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CFbsBitmap* bmp=NewBitmapL(fileName, objectSize);
+ if ( bmp == NULL )
+ {
+ ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CleanupStack::PushL(bmp);
+ CEmsPictureIE* newElement=CEmsPictureIE::NewL(*bmp);
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(2, bmp);
+ }
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("No Picture file name"));
+ SetTestStepResult(EFail);
+ }
+ }
+ else if ( type.Compare(KTypeUserPrompt) == 0 )
+ {
+ // === Process user prompt Information Element ===
+ CEmsUserPrompt* newElement=CEmsUserPrompt::NewL(2);
+ CleanupStack::PushL(newElement);
+ newElement->SetStartPosition(startPosition);
+ message.AddEMSInformationElementL(*newElement);
+ CleanupStack::PopAndDestroy(newElement);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Unknown element type %S"), &type);
+ SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("No type given"));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ RFbsSession::Disconnect();
+ }
+
+/**
+ This function reads the schedule time from ini file
+ @return - returns the schedule time read from the ini file
+*/
+TTimeIntervalMinutes CTestMessBase::ReadScheduleTime()
+ {
+ // Read the schedule time from ini file. Add this schedule time to current time.
+ // This time will be set as the scheduled time for sending the SMS message from task scheduler
+ // By default schedule time will be 1 min
+ TInt scheduled=0;
+ GetIntFromConfig(ConfigSection(), KScheduled, scheduled);
+ INFO_PRINTF2(_L("Scheduled Time in minutes is %d"), scheduled);
+ return TTimeIntervalMinutes(scheduled);
+ }
+
+void CTestMessBase::SetAlignmentFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aAlignment)
+ {
+ //Sets the alignment to the text
+ INFO_PRINTF2(_L("Alignment %S"), &aAlignment);
+ if( aAlignment.Compare(KLeftAlign)== 0 )
+ {
+ aEmsFormatIE.SetAlignment(CEmsFormatIE::ELeft);
+ }
+ else if( aAlignment.Compare(KRightAlign)== 0 )
+ {
+ aEmsFormatIE.SetAlignment(CEmsFormatIE::ERight);
+ }
+ else if( aAlignment.Compare(KCenterAlign)== 0 )
+ {
+ aEmsFormatIE.SetAlignment(CEmsFormatIE::ECenter);
+ }
+ else if( aAlignment.Compare(KLangDepend)== 0 )
+ {
+ aEmsFormatIE.SetAlignment(CEmsFormatIE::ELangDepend);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Illegal alignment value"));
+ SetTestStepResult(EFail);
+ }
+ }
+
+void CTestMessBase::SetFontSizeFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aFontSize)
+ {
+ //Sets the specified font to the text
+ INFO_PRINTF2(_L("FontSize %S"), &aFontSize);
+ if( aFontSize.Compare(KNormal)== 0 )
+ {
+ aEmsFormatIE.SetFontSize(CEmsFormatIE::ENormal);
+ }
+ else if( aFontSize.Compare(KLarge)== 0 )
+ {
+ aEmsFormatIE.SetFontSize(CEmsFormatIE::ELarge);
+ }
+ else if( aFontSize.Compare(KSmall)== 0 )
+ {
+ aEmsFormatIE.SetFontSize(CEmsFormatIE::ESmall);
+ }
+ else if( aFontSize.Compare(KReserved)== 0 )
+ {
+ aEmsFormatIE.SetFontSize(CEmsFormatIE::EReserved);
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Illegal fonst size value"));
+ SetTestStepResult(EFail);
+ }
+ }
+
+CEmsPreDefAnimationIE* CTestMessBase::NewPreDefAnimationL(const TDesC& aPreDefType)
+//
+// Attaches the required predef animation.
+// Arguments - aString - holds the TAnim type to be attached
+// Return Value - Returns a Pointer of CEmsPreDefAnimationIE
+//
+ {
+ //Initialize emsPreDef to NULL
+ CEmsPreDefAnimationIE::TAnimType animType=CEmsPreDefAnimationIE::EFlirty;
+ TBool validType=ETrue;
+
+ //Set a value for emsPreDef
+ if ( aPreDefType.Compare(KEmsAnimTypeFlirty) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EFlirty;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeGlad) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EGlad;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeSceptic) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::ESceptic;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeSad) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::ESad;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeWow) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EWow;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeCrying) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::ECrying;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeWinking) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EWinking;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeLaughing) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::ELaughing;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeIndifferent) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EIndifferent;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeKissing) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EKissing;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeConfused) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EConfused;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeTongueOut) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::ETongueOut;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeAngry) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EAngry;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeGlasses) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EGlasses;
+ }
+ else if ( aPreDefType.Compare(KEmsAnimTypeDevil) == 0 )
+ {
+ animType = CEmsPreDefAnimationIE::EDevil;
+ }
+ else
+ {
+ validType=EFalse;
+ }
+
+ CEmsPreDefAnimationIE* emsPreDef=NULL;
+ if ( validType )
+ {
+ emsPreDef=CEmsPreDefAnimationIE::NewL(animType);
+ }
+
+ return emsPreDef;
+ }
+
+CEmsPreDefSoundIE* CTestMessBase::NewPreDefSoundL(const TDesC& aPreDefType)
+//
+// Attaches the required predef animation.
+// Arguments - aString - holds the TAnim type to be attached
+// Return Value - Returns a Pointer of CEmsPreDefAnimationIE
+//
+ {
+ //Initialize emsPreDef to NULL
+ CEmsPreDefSoundIE::TPredefinedSound soundType=CEmsPreDefSoundIE::EChimesHigh;
+ TBool validType=ETrue;
+
+ //Set a value for emsPreDef
+ if ( aPreDefType.Compare(KEmsSoundTypeChimesHigh) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EChimesHigh;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeChimesLow) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EChimesLow;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeDing) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EDing;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeTaDa) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::ETaDa;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeNotify) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::ENotify;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeDrum) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EDrum;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeClaps) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EClaps;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeFanFar) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EFanFar;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeChordHigh) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EChordHigh;
+ }
+ else if ( aPreDefType.Compare(KEmsSoundTypeChordLow) == 0 )
+ {
+ soundType = CEmsPreDefSoundIE::EChordLow;
+ }
+ else
+ {
+ validType=EFalse;
+ }
+
+ CEmsPreDefSoundIE* emsPreDef=NULL;
+ if ( validType )
+ {
+ emsPreDef=CEmsPreDefSoundIE::NewL(soundType);
+ }
+
+ return emsPreDef;
+ }
+
+CFbsBitmap* CTestMessBase::NewBitmapL(const TParse& aFileName, const TDesC& aObjectSize)
+ {
+ TInt bitmapType=KSmallObject;
+ TBool validType=ETrue;
+ if( aObjectSize.Compare(KSmall) == 0 )
+ {
+ bitmapType=KSmallObject;
+ }
+ else if ( aObjectSize.Compare(KLarge) == 0 )
+ {
+ bitmapType=KLargeObject;
+ }
+ else if ( aObjectSize.Compare(KVariable) == 0 )
+ {
+ bitmapType=KVariableObject;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Invalid bitmap type %S"), &aObjectSize);
+ validType=EFalse;
+ }
+
+ CFbsBitmap* bmp = NULL;
+ if ( validType )
+ {
+ bmp = new (ELeave) CFbsBitmap();
+
+ TInt error = bmp->Load(aFileName.FullName(), bitmapType, EFalse);
+ INFO_PRINTF2(_L("Bimap load %d"), error);
+ if ( error != KErrNone)
+ {
+ delete bmp;
+ bmp=NULL;
+ }
+ }
+
+ return bmp;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Src/TestMessCleanMessageFolder.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Src/TestMessCleanMessageFolder.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,171 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessCleanMessageFolder which cleans out all the
+// message folders
+//
+//
+
+#include "TestMessCleanMessageFolder.h"
+
+// EPOC includes
+#include
+#include
+
+#ifdef __MESSAGING_API_V2__
+#include
+#endif
+
+_LIT(KMessageCount, "messagecount");
+
+CTestMessCleanMessageFolder::CTestMessCleanMessageFolder()
+: CTestMessBase(ETrue)
+, iNumberOfMessagesToDelete(-1) // Negative value implies delete all
+ {
+ SetTestStepName(_L("CleanMessageFolder"));
+ }
+
+TVerdict CTestMessCleanMessageFolder::doTestStepL()
+ {
+ INFO_PRINTF1(_L("Clean message folder"));
+
+ if ( GetIntFromConfig(ConfigSection(), KMessageCount, iNumberOfMessagesToDelete) )
+ {
+ INFO_PRINTF2(_L("Message count read from the ini file is %D"), iNumberOfMessagesToDelete);
+ }
+ else
+ {
+ WARN_PRINTF1(_L("No Count specified in the ini file"));
+ WARN_PRINTF1(_L("All the messages will be deleted"));
+ }
+
+ if ( TestStepResult() == EPass )
+ {
+ //delete the contents of the folder
+ CleanFolders(EntryL().EntryId());
+
+ if ( iNumberOfMessagesToDelete<=0 )
+ {
+ INFO_PRINTF1(_L("Messages deleted"));
+ }
+ else
+ {
+ ERR_PRINTF2(_L("%d Outstanding entries not deleted."), iNumberOfMessagesToDelete);
+ SetTestStepResult(EFail);
+ }
+ }
+
+ return TestStepResult();
+ }
+
+void CTestMessCleanMessageFolder::CleanFolders(const TMsvId aEntryId)
+ {
+#ifdef __MESSAGING_API_V2__
+ if ( aEntryId == KMsvRootIndexEntryId )
+ {
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+
+ RArray pop3Accounts;
+ CleanupClosePushL(pop3Accounts);
+ accounts->GetPopAccountsL(pop3Accounts);
+ TInt count = pop3Accounts.Count();
+ TInt index=0;
+ for( index = 0; index < count; index++ )
+ {
+ TPopAccount id = pop3Accounts[index];
+ accounts->DeletePopAccountL( id );
+ }
+
+ RArray imap4Accounts;
+ CleanupClosePushL(imap4Accounts);
+ accounts->GetImapAccountsL(imap4Accounts);
+ count = imap4Accounts.Count();
+ for( TInt index = 0; index < count; index++ )
+ {
+ TImapAccount id = imap4Accounts[index];
+ accounts->DeleteImapAccountL( id );
+ }
+
+ CleanupStack::PopAndDestroy(3, accounts);
+ }
+#endif
+
+ SetEntryL(aEntryId);
+ EntryL().SetSortTypeL(SelectionOrdering());
+ CMsvEntrySelection* selection=EntryL().ChildrenL();
+ CleanupStack::PushL(selection);
+ TInt count=selection->Count();
+ TInt i;
+ for (i=count; i>0; )
+ {
+ TMsvId childId=selection->At(--i);
+
+ SetEntryL(aEntryId);
+ if( iNumberOfMessagesToDelete!=0 )
+ {
+ TRAPD(err, EntryL().DeleteL(childId));
+ switch ( err )
+ {
+ case KErrNone:
+ INFO_PRINTF2(_L("DeletedId : %x"), childId);
+ if ( iNumberOfMessagesToDelete > 0 )
+ {
+ --iNumberOfMessagesToDelete;
+ }
+ break;
+ case KErrAccessDenied:
+ INFO_PRINTF2(_L("Access Denied : %x"), childId);
+ break;
+ default:
+ ERR_PRINTF3(_L("Deletion Error : %d , Id : %x "), err, childId);
+ SetTestStepResult(EFail);
+ break;
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(selection);
+
+ EntryL().SetSortTypeL(SelectionOrdering());
+ selection=EntryL().ChildrenL();
+ CleanupStack::PushL(selection);
+ count=selection->Count();
+ for (i=count; i>0; )
+ {
+ TMsvId childId=selection->At(--i);
+
+ // Log child
+ CleanFolders(childId);
+
+ SetEntryL(aEntryId);
+
+ TRAPD(err, EntryL().DeleteL(childId));
+ switch ( err )
+ {
+ case KErrNone:
+ INFO_PRINTF2(_L("DeletedId : %x"), childId);
+ if ( iNumberOfMessagesToDelete > 0 )
+ {
+ --iNumberOfMessagesToDelete;
+ }
+ break;
+ case KErrAccessDenied:
+ INFO_PRINTF2(_L("Access Denied : %x"), childId);
+ break;
+ default:
+ ERR_PRINTF3(_L("Deletion Error : %d , Id : %x "), err, childId);
+ SetTestStepResult(EFail);
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy(selection);
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Src/TestMessCreateCdmaSmsUtil.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Src/TestMessCreateCdmaSmsUtil.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,433 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TestMessCreateCdmsSmsUtil.cpp
+// This class creates the Cdma sms header and the service settings
+//
+//
+
+#include "TestMessCreateCdmaSmsUtil.h"
+#include "TestMessCreateSmsAccount.h"
+
+// EPOC includes
+#include
+
+/*@{*/
+_LIT(KPtDeliveryAck, "DeliveryAck");
+_LIT(KPtUserAck, "UserAck");
+_LIT(KPtReadAck, "ReadAck");
+_LIT(KPtMessageConversion, "MessageConversion");
+_LIT(KPtPriorityIndicator, "PriorityIndicator");
+_LIT(KPtPrivacyIndicator, "PrivacyIndicator");
+_LIT(KPtReplyOption, "ReplyOption");
+_LIT(KPtAlertonDelivery, "AlertonDelivery");
+_LIT(KPtLanguageIndicator, "LanguageIndicator");
+
+//Constants used
+_LIT(KPtTeleService, "TeleService");
+_LIT(KPtSubmit, "Submit");
+_LIT(KPtCancel, "Cancel");
+
+// Supported Teleservices
+_LIT(KPtTeleWmt, "WMT");
+_LIT(KPtTeleWemt, "WEMT");
+_LIT(KPtTeleWpt, "WPT");
+_LIT(KPtTeleVmn, "VMN");
+_LIT(KPtTeleScpt, "SCPT");
+_LIT(KPtTeleCatpt, "CATPT");
+_LIT(KPtTeleCmt91, "CMT91");
+_LIT(KPtTeleWap, "WAP");
+
+// Supported message conversion formats
+_LIT(KPtPidFax, "Fax");
+_LIT(KPtPidX400, "X400");
+_LIT(KPtPidPaging, "Paging");
+_LIT(KPtPidMail, "Mail");
+_LIT(KPtPidErmes, "Ermes");
+_LIT(KPtPidSpeech, "Speech");
+/*@}*/
+
+/**
+ Constructor
+*/
+CTestMessCreateCdmaSmsUtil ::CTestMessCreateCdmaSmsUtil(CTestMessBase& aTestStep)
+: CTestMessCreateSmsUtilBase(aTestStep)
+ {
+ aTestStep.INFO_PRINTF1(_L("The CDMA SMS util is created"));
+ }
+
+/**
+ Prepares the SMS account details for CSendAs/RSendAs
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+void CTestMessCreateCdmaSmsUtil::PrepareAccountL(CMsvSession& /*aSession*/)
+ {
+ // Reads the teleservice
+ tia637::TTeleserviceId teleServiceId=tia637::KTeleserviceWMT;
+ TPtrC ptrTeleService;
+ if( !(iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KPtTeleService, ptrTeleService)))
+ {
+ iTestStep.INFO_PRINTF1(_L("Teleservice is not provided. Default teleservice (WMT) is used"));
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF2(_L("Teleservice to be set is : %S"), &ptrTeleService);
+
+ //Get the teleservice Id
+ teleServiceId = GetTeleServiceId(ptrTeleService);
+ }
+
+ if ( teleServiceId!=tia637::KTeleserviceWEMT )
+ {
+ teleServiceId=tia637::KTeleserviceWMT;
+ }
+
+ CSmsSettings* smsSettings = CSmsSettings::NewL();
+ CleanupStack::PushL(smsSettings);
+
+ CSmsAccount* smsAccount=CSmsAccount::NewLC();
+ smsAccount->LoadSettingsL(*smsSettings);
+ smsSettings->SetDefaultTeleservice(teleServiceId);
+ smsAccount->SaveSettingsL(*smsSettings);
+ CleanupStack::PopAndDestroy(smsAccount);
+ CleanupStack::PopAndDestroy(smsSettings);
+ }
+
+/**
+ Creates a new CDMA sms header object
+ @param aBodyText - body text of the message
+ @return CSmsHeader - pointer of the CSmsHeader object
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+CSmsHeader* CTestMessCreateCdmaSmsUtil::NewHeaderL(CRichText& aBodyText)
+ {
+ return CSmsHeader::NewL(KSmsTypeSubmit, aBodyText);
+ }
+
+/**
+ Fill up the header object with data read from the ini file
+ @param aSmsHeader - reference for the sms header object
+ @leave - System wide error codes
+*/
+void CTestMessCreateCdmaSmsUtil::PrepareHeaderL(CSmsHeader& aSmsHeader)
+ {
+ // Get bearer data
+ TPtrC ptrBearer;
+ TBool returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KBearer, ptrBearer);
+ if ( !returnValue )
+ {
+ //If no bearer provided, the bearer is read from the default section ofthe
+ // ini file
+ returnValue=iTestStep.GetStringFromConfig(KDef, KDefBearer, ptrBearer);
+ }
+
+ if ( returnValue )
+ {
+ //default value for the bearer
+ TBioMsgIdType bearer = EBioMsgIdNbs;
+
+ iTestStep.INFO_PRINTF2(_L("Bearer = %S"), &ptrBearer);
+ if (ptrBearer.CompareF(KBearerWap) == 0)
+ {
+ //Wap message ID
+ bearer = EBioMsgIdWap;
+ }
+ else if (ptrBearer.CompareF(KBearerWapSecure) == 0)
+ {
+ //WapSecure message ID
+ bearer = EBioMsgIdWapSecure;
+ }
+ else
+ {
+ iTestStep.ERR_PRINTF1(_L("No bearer provided. Default is used"));
+ }
+
+ //Set the BIO Message ID type
+ aSmsHeader.BioMessage().SetBioMsgIdType(bearer);
+ }
+
+ // Get encoding data
+ TInt encoding;
+ returnValue=iTestStep.GetIntFromConfig(iTestStep.ConfigSection(), KEncoding, encoding);
+ if ( !returnValue )
+ {
+ //If no encoding is provided, the encoding is read from the default section
+ //of the ini file
+ returnValue=iTestStep.GetIntFromConfig(KDef, KDefEncoding, encoding);
+ }
+ if ( returnValue )
+ {
+ //Default encoding value.
+ TSmsCharacterEncoding charEncoding = KSmsEncodingUnicode;
+
+ iTestStep.INFO_PRINTF2(_L("Encoding = %d"), encoding);
+ switch (encoding)
+ {
+ case 7:
+ //7 bit encoding format
+ charEncoding = KSmsEncoding7BitASCII;
+ break;
+ case 8:
+ //8 bit encoding format
+ charEncoding = KSmsEncodingBinary;
+ break;
+ case 16:
+ //unicode encoding format
+ charEncoding = KSmsEncodingUnicode;
+ break;
+ default:
+ //default encoding format
+ charEncoding = KSmsEncodingUnicode;
+ break;
+ }
+ //Set the character encoding format
+ aSmsHeader.BioMessage().SetEncoding(charEncoding);
+ }
+
+
+ TBool deliveryAck = EFalse;
+ TBool userAck = EFalse;
+ TBool readAck = EFalse;
+
+ // Get acknowledgements report request
+ TPtrC ptrDeliveryReport;
+ returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KDeliveryReport, ptrDeliveryReport);
+ if ( !returnValue )
+ {
+ returnValue=iTestStep.GetStringFromConfig(KDef, KDefDeliveryReport, ptrDeliveryReport);
+ }
+ if ( returnValue )
+ {
+ iTestStep.INFO_PRINTF2(_L("The acknowledgement request flag : %S"), &ptrDeliveryReport);
+ if(ptrDeliveryReport.Compare(_L("NO")) == 0)
+ {
+ deliveryAck = EFalse;
+ userAck = EFalse;
+ readAck = EFalse;
+ }
+ if(ptrDeliveryReport.Compare(_L("YES")) == 0)
+ {
+ // Read different type of acknowledgements
+ iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtDeliveryAck, deliveryAck);
+ iTestStep.INFO_PRINTF2(_L("The Delivery acknowledgement request flag : %d"), deliveryAck);
+ iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtUserAck, userAck);
+ iTestStep.INFO_PRINTF2(_L("The User acknowledgement request flag : %d"), userAck);
+ iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtReadAck, readAck);
+ iTestStep.INFO_PRINTF2(_L("The Read acknowledgement request flag : %d"), readAck);
+ }
+ }
+
+ aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeDelivery, deliveryAck);
+ aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeUser, userAck);
+ aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeRead, readAck);
+
+ //Get the message conversion type
+ TPtrC ptrMessageConversion;
+ TSmsPIDConversion smsPidConversion = ESmsConvPIDNone;
+ returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KPtMessageConversion, ptrMessageConversion);
+ if ( !returnValue )
+ {
+ iTestStep.INFO_PRINTF1(_L("The message conversion is not provided. Default (PIDNone) is taken"));
+ }
+ if ( returnValue )
+ {
+ iTestStep.INFO_PRINTF2(_L("The message conversion to be set is : %S"), &ptrMessageConversion);
+ //Get the Message conversion id
+ smsPidConversion = GetMessageConversionId(ptrMessageConversion);
+ }
+ //Set the message conversion.
+ CSmsSettings *smsSettings = CSmsSettings::NewL();
+ CleanupStack::PushL(smsSettings);
+ aSmsHeader.GetDefaultMessageSettingsL(*smsSettings);
+ smsSettings->SetMessageConversion(smsPidConversion);
+ CleanupStack::Pop(smsSettings);
+
+ // Set the other message settings
+ aSmsHeader.CdmaMessage().SetPrivacyIndicatorL(tia637::KBdRestricted);
+ aSmsHeader.CdmaMessage().SetPriorityIndicatorL(tia637::KBdUrgent);
+ aSmsHeader.CdmaMessage().SetAlertOnDeliveryL(tia637::KBdUseMediumPriorityAlert);
+ aSmsHeader.CdmaMessage().SetLanguageIndicatorL(tia637::KLanguageEnglish);
+ }
+
+/**
+ Sets the cdma sms service settings fields using data read from the
+ ini file. If no data is provided/read from ini file, the default
+ account settings is used.
+ @param aSmsSettings - reference of the CSmsSettings
+*/
+void CTestMessCreateCdmaSmsUtil::SetSmsAccountSettings(CSmsSettings& aSmsSettings)
+ {
+ iTestStep.INFO_PRINTF1(_L("Set SMS account Settings...."));
+ TBool boolTemp;
+
+ // Set the Reply quoted setting.
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyQuoted, boolTemp) )
+ {
+ aSmsSettings.SetReplyQuoted(boolTemp);
+ }
+
+ // Set the priority indicator
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtPriorityIndicator, boolTemp) )
+ {
+ aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTPriorityIndicator, boolTemp);
+ }
+
+ //Set the Privacy Indicator
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtPrivacyIndicator, boolTemp) )
+ {
+ aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTPrivacyIndicator, boolTemp);
+ }
+
+ //Set the Reply option
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtReplyOption, boolTemp) )
+ {
+ aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTReplyOption, boolTemp);
+ }
+
+ //Set the alert on Message deliver
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtAlertonDelivery, boolTemp) )
+ {
+ aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTAlertOnMessageDelivery, boolTemp);
+ }
+
+ //Set the Language Indicator
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KPtLanguageIndicator, boolTemp) )
+ {
+ aSmsSettings.MessageSettings().Cdma().ActivateMessageSetting(tia637::KTLanguageIndicator, boolTemp);
+ }
+
+ aSmsSettings.SetValidityPeriod(ESmsVPWeek); // week
+ aSmsSettings.SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); //relative
+ aSmsSettings.SetDelivery(ESmsDeliveryImmediately);
+ }
+
+/**
+ Get the message type id
+ @param aMessageType - TPtrC object holding the message type
+ @return TSmsMessageType - message type id
+*/
+TSmsMessageType CTestMessCreateCdmaSmsUtil::GetMessageTypeId(const TDesC& aMessageType)
+ {
+ //Default message type is assigned
+ TSmsMessageType smsMessageType = KSmsTypeSubmit;
+
+ if( aMessageType.Compare(KPtSubmit) ==0)
+ {
+ smsMessageType = KSmsTypeSubmit;
+ }
+ else if( aMessageType.Compare(KPtCancel) ==0)
+ {
+ smsMessageType = KSmsTypeCdmaCancellation;
+ }
+ else
+ {
+ iTestStep.WARN_PRINTF1(_L("Invalid message type provided. Default is used"));
+ }
+ return smsMessageType;
+ }
+
+/**
+ Gets the Teleservice Id
+ @param aTeleService - TPtrC holding the tele service name
+ @return tia637::TTeleserviceId - teleservice id
+*/
+tia637::TTeleserviceId CTestMessCreateCdmaSmsUtil::GetTeleServiceId(const TDesC& aTeleService)
+ {
+ //default teleservice ID assigned
+ tia637::TTeleserviceId teleServiceId = tia637::KTeleserviceWMT;
+
+ iTestStep.INFO_PRINTF2(_L("Teleservice set is : %S"), &aTeleService);
+ if( aTeleService.Compare(KPtTeleScpt) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceSCPT;
+ }
+ else if( aTeleService.Compare(KPtTeleCatpt) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceCATPT;
+ }
+ else if( aTeleService.Compare(KPtTeleCmt91) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceCMT91;
+ }
+ else if( aTeleService.Compare(KPtTeleVmn) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceVMN;
+ }
+ else if( aTeleService.Compare(KPtTeleWap) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceWAP;
+ }
+ else if( aTeleService.Compare(KPtTeleWemt) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceWEMT;
+ }
+ else if( aTeleService.Compare(KPtTeleWmt) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceWMT;
+ }
+ else if( aTeleService.Compare(KPtTeleWpt) ==0)
+ {
+ teleServiceId = tia637::KTeleserviceWPT;
+ }
+ else
+ {
+ iTestStep.WARN_PRINTF1(_L("Invalid Teleservice provided. Default WMT used"));
+ }
+
+ return teleServiceId;
+ }
+
+/**
+ Gets the Message Conversion Id
+ @param aTeleService - TPtrC holding the tele service name
+ @return tia637::TTeleserviceId - teleservice id
+*/
+TSmsPIDConversion CTestMessCreateCdmaSmsUtil::GetMessageConversionId(const TDesC& aMessageConversion)
+ {
+ TSmsPIDConversion smsPidConv = ESmsConvPIDNone;
+
+ iTestStep.INFO_PRINTF2(_L("The message conversion set is : %S"), &aMessageConversion);
+ if( aMessageConversion.Compare(KPtPidFax) ==0)
+ {
+ smsPidConv = ESmsConvFax;
+ }
+ else if( aMessageConversion.Compare(KPtPidX400) ==0)
+ {
+ smsPidConv = ESmsConvX400;
+ }
+ else if( aMessageConversion.Compare(KPtPidPaging) ==0)
+ {
+ smsPidConv = ESmsConvPaging;
+ }
+ else if( aMessageConversion.Compare(KPtPidMail) ==0)
+ {
+ smsPidConv = ESmsConvMail;
+ }
+ else if( aMessageConversion.Compare(KPtPidErmes) ==0)
+ {
+ smsPidConv = ESmsConvErmes;
+ }
+ else if( aMessageConversion.Compare(KPtPidSpeech) ==0)
+ {
+ smsPidConv = ESmsConvSpeech;
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF1(_L("The message conversion provided is invalid"));
+ iTestStep.INFO_PRINTF1(_L("The default NONE message conversion is set"));
+ }
+
+ return smsPidConv;
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Src/TestMessCreateGsmSmsUtil.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,262 @@
+// Copyright (c) 2004-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This class creates the Gsm sms header and service settings. It fills up the
+// fields using data read from the ini file
+//
+//
+
+#include "Configuration.cfg"
+
+#include "TestMessCreateGsmSmsUtil.h"
+
+/**
+ Constructor
+*/
+CTestMessCreateGsmSmsUtil::CTestMessCreateGsmSmsUtil(CTestMessBase &aTestStep)
+: CTestMessCreateSmsUtilBase(aTestStep)
+ {
+ aTestStep.INFO_PRINTF1(_L("The GSM SMS util is created"));
+ }
+
+/**
+ Prepares the SMS account details for CSendAs/RSendAs
+ @leave - KErrNoMemory
+ @leave - System wide error codes
+*/
+void CTestMessCreateGsmSmsUtil::PrepareAccountL(CMsvSession& /*aSession*/)
+ {
+ }
+
+/**
+ Creates the header object for the GSM sms message
+ @param aBodyText - body text of the message
+ @return CSmsHeader* - pointer to CSmsHeader
+ @leave - KErrNoMemory
+ @leave - system wide error codes
+*/
+CSmsHeader* CTestMessCreateGsmSmsUtil::NewHeaderL(CRichText &aBodyText)
+ {
+ return CSmsHeader::NewL(CSmsPDU::ESmsSubmit, aBodyText);
+ }
+
+/**
+ Fills up the header object with the data read from the ini file.
+ @param aSmsHeader - sms header object ofthe sms message
+ @leave - system wide error codes
+*/
+void CTestMessCreateGsmSmsUtil::PrepareHeaderL(CSmsHeader &aSmsHeader)
+ {
+ // Get bearer data
+ TPtrC ptrBearer;
+ TBool returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KBearer, ptrBearer);
+ if ( !returnValue )
+ {
+ //If bearer is not provided, read from the default section of the ini file
+ returnValue=iTestStep.GetStringFromConfig(KDef, KDefBearer, ptrBearer);
+ }
+
+ if ( returnValue )
+ {
+ //default value for Bio message ID type
+ TBioMsgIdType bearer = EBioMsgIdNbs;
+
+ iTestStep.INFO_PRINTF2(_L("Bearer = %S"), &ptrBearer);
+ if (ptrBearer.CompareF(KBearerWap) == 0)
+ {
+ //Set Wap message ID
+ bearer = EBioMsgIdWap;
+ }
+ else if (ptrBearer.CompareF(KBearerWapSecure) == 0)
+ {
+ //Set WapSecure message ID
+ bearer = EBioMsgIdWapSecure;
+ }
+ else
+ {
+ iTestStep.INFO_PRINTF1(_L("No supported bearer is provided. Default is used"));
+ }
+
+ //Set the Bio message ID type.
+#if (defined CDMA_API_ENABLED)
+ aSmsHeader.BioMessage().SetBioMsgIdType(bearer);
+#else
+ aSmsHeader.SetBioMsgIdType(bearer);
+#endif
+ }
+
+ // Get encoding data
+ TInt encoding;
+ returnValue=iTestStep.GetIntFromConfig(iTestStep.ConfigSection(), KEncoding, encoding);
+ if ( !returnValue )
+ {
+ //If encoding is not provied, read it from the default section of the ini file
+ returnValue=iTestStep.GetIntFromConfig(KDef, KDefEncoding, encoding);
+ }
+ if ( returnValue )
+ {
+ iTestStep.INFO_PRINTF2(_L("Encoding = %d"), encoding);
+#if (defined CDMA_API_ENABLED)
+ TSmsCharacterEncoding charEncoding;
+
+ switch (encoding)
+ {
+ case 7:
+ //7 bit encoding format
+ charEncoding = KSmsEncoding7BitGsm;
+ break;
+ case 8:
+ //8 bit encoding format
+ charEncoding = KSmsEncodingBinary;
+ break;
+ case 16:
+ //Unicode encoding format
+ charEncoding = KSmsEncodingUnicode;
+ break;
+ default:
+ //default encoding format
+ charEncoding = KSmsEncoding7BitGsm;
+ break;
+ }
+
+ //Set the character encoding
+ aSmsHeader.BioMessage().SetEncoding(charEncoding);
+#else
+ TSmsDataCodingScheme::TSmsAlphabet alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+
+ switch (encoding)
+ {
+ case 7:
+ alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+ break;
+ case 8:
+ alpha = TSmsDataCodingScheme::ESmsAlphabet8Bit;
+ break;
+ case 16:
+ alpha = TSmsDataCodingScheme::ESmsAlphabetUCS2;
+ break;
+ default:
+ alpha = TSmsDataCodingScheme::ESmsAlphabet7Bit;
+ break;
+ }
+
+ CSmsPDU& pdu=aSmsHeader.Message().SmsPDU();
+ if ( pdu.DataCodingSchemePresent() )
+ {
+ pdu.SetAlphabet(alpha);
+ }
+#endif
+ }
+
+ // Get delivery report data
+ TPtrC ptrDeliveryReport;
+ returnValue=iTestStep.GetStringFromConfig(iTestStep.ConfigSection(), KDeliveryReport, ptrDeliveryReport);
+ if ( !returnValue )
+ {
+ returnValue=iTestStep.GetStringFromConfig(KDef, KDefDeliveryReport, ptrDeliveryReport);
+ }
+ if ( returnValue )
+ {
+ TBool changeDR = EFalse;
+ TBool deliveryReport = EFalse;
+
+ iTestStep.INFO_PRINTF2(_L("Delivery Report = %S"), &ptrDeliveryReport);
+ if (ptrDeliveryReport.CompareF(_L("NO")) == 0)
+ {
+ changeDR = ETrue;
+ deliveryReport = EFalse;
+ }
+ else if (ptrDeliveryReport.CompareF(_L("YES")) == 0)
+ {
+ changeDR = ETrue;
+ deliveryReport = ETrue;
+ }
+
+ if ( changeDR )
+ {
+#if (defined CDMA_API_ENABLED)
+ aSmsHeader.SetAcknowledgementRequest(ESmsAckTypeDelivery, deliveryReport);
+#else
+ switch ( aSmsHeader.Type() )
+ {
+ case CSmsPDU::ESmsSubmit:
+ aSmsHeader.Submit().SetStatusReportRequest(deliveryReport);
+ break;
+ case CSmsPDU::ESmsCommand:
+ aSmsHeader.Command().SetStatusReportRequest(deliveryReport);
+ break;
+ default:
+ User::Leave(KErrNotSupported);
+ }
+#endif
+ }
+ }
+ }
+/**
+ Sets the fields for the sms account settings using data read from the ini file
+ If no data is given in ini file, the default settings in the account is used.
+ @param aSmsSettings - CSmsSettings reference
+*/
+void CTestMessCreateGsmSmsUtil::SetSmsAccountSettings(CSmsSettings &aSmsSettings)
+ {
+ iTestStep.INFO_PRINTF1(_L("Set SMS account Settings...."));
+ TBool boolTemp;
+
+ // Set the Reply quoted setting.
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyQuoted, boolTemp) )
+ {
+ aSmsSettings.SetReplyQuoted(boolTemp);
+ }
+
+ // Set the Reject duplicate settings.
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KRejectDuplicate, boolTemp) )
+ {
+#if (defined CDMA_API_ENABLED)
+ aSmsSettings.MessageSettings().Gsm().SetRejectDuplicate(boolTemp);
+#else
+ aSmsSettings.SetRejectDuplicate(boolTemp);
+#endif
+ }
+
+ // Set the option for delivery report.
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KDeliveryReport, boolTemp) )
+ {
+ aSmsSettings.SetDeliveryReport(boolTemp);
+ }
+
+ // Set the concatenate feature
+ if ( iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KConCatenate, boolTemp) )
+ {
+#if (defined CDMA_API_ENABLED)
+ aSmsSettings.MessageSettings().Gsm().SetCanConcatenate(boolTemp);
+#else
+ aSmsSettings.SetCanConcatenate(boolTemp);
+#endif
+ }
+
+ // Set whether to use the same path while replying.
+ if(iTestStep.GetBoolFromConfig(iTestStep.ConfigSection(), KReplyPath, boolTemp))
+ {
+#if (defined CDMA_API_ENABLED)
+ aSmsSettings.MessageSettings().Gsm().SetReplyPath(boolTemp);
+#else
+ aSmsSettings.SetReplyPath(boolTemp);
+#endif
+ }
+
+ //can implement these features later...
+ aSmsSettings.SetValidityPeriod(ESmsVPWeek); // week
+ aSmsSettings.SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); //relative
+ aSmsSettings.SetDelivery(ESmsDeliveryImmediately);
+ aSmsSettings.SetMessageConversion(ESmsConvPIDNone);
+ }
diff -r 56e7098e1ace -r d5964b46ccaf common/tools/ats/smoketest/messaging/Src/TestMessCreateSMS.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/common/tools/ats/smoketest/messaging/Src/TestMessCreateSMS.cpp Fri May 29 17:20:47 2009 +0100
@@ -0,0 +1,417 @@
+// Copyright (c) 2002-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 "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CTestMessCreateSMS. This class creates the sms message
+// for GSM or CDMA. For CDMA mtm, it uses utility classes to create
+// the respective GSM or CDMA sms message
+//
+//
+
+#include "Configuration.cfg"
+
+#include "TestMessCreateSMS.h"
+#include "TestMessEditEntryUtil.h"
+
+//Usage of macros of Cdma mtm
+#include "TestMessCreateGsmSmsUtil.h"
+#if (defined CDMA_API_ENABLED)
+#include "TestMessCreateCdmaSmsUtil.h"
+#endif
+
+// EPOC includes
+#include