{"text_format":"3","workbook":"xls","n_sheets":6,"sheets":["SysMon","StartSafe","Startupprop","Restartsys","Doc Info","Notes"],"not_rendered":{"external_links":1,"defined_names":7},"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"SysMon","index":0,"n_rows":54,"n_cols":10,"rows_kept":54,"flags":["formulas_cached_only"]}
["Test Case ID","Test Case Name","REQs Tested","Priority","Test Type","Test Purpose","Test Actions","Expected Results","Test Status","Comments"]
["APPFWK-SYSMON-0001","Process Monitor.","REQ6594\nREQ6598\nREQ9457\nREQ9266",1,"UT","A process can be requested to be monitored once and only once.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\nStart TestApp as a process from test-execute test. Call RSysMonSession::Monitor() for this process. It should return KErrNone.\nCall RSysMonSession::Monitor() again. It should return error. Send Cancel command and Kill command to TestApp.","The error value should be KErrAlreadyExists.","Implemented"]
["APPFWK-SYSMON-0002","Monitoring multiple process and applications","REQ6603\nREQ9457\nREQ9266",1,"UT","Multiple processes and applications of same name can be monitored.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\nUse RProcess::Create() to create two instances of TestApp. \nCall Monitor() on each of the processes with EWaitForStart EIgnoreOnFailure wait time of 1 sec. This is the actual test – the Monitor() should return KErrNone each time.\nThen call Monitor() again on each of the process and it should return KErrAlreadyExists.\nKill the processes. SysMon will try to load the processes but will fail and ignore because of EIgnoreOnFailure.","Each time Monitor() should return KErrNone for the first time and return KErrAlreadyExists the second time.","Implemented"]
["APPFWK-SYSMON-0003","Process restart on failure.","REQ6595\nREQ9457\nREQ9266",1,"UT","A process can be restarted on failure.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start TestApp as a process from test-execute test. \n2. Call RSysMonSession::Monitor() for this process with all possible startmethods   retry count = 1 and EIgnoreProcessFailure. \n3. Kill the process \n5. System Monitor should restart the process after KWaitTime (15s). \n6. Verify that the process is restarted.","Pass","Implemented"]
["APPFWK-SYSMON-0004","Process restart with throttle.","REQ6830\nREQ9457\nREQ9266",1,"UT","A process can be restarted on failure only after throttle time.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start a process \n2. Call RSysMonSession::Monitor() for this process with EWaitForStart retry count = 1    and EIgnoreProcessFailure.\n3. Kill the process\n5. Then the test should try connect to the TestApp. The connection should fail - this is the actual test\n6. The test execute test should wait the throttle time (may be 15 sec). \n7. Then try to connect to the server and poke the server. This is because System Monitor will wait throttle time to restart the process.","Pass","Implemented"]
["APPFWK-SYSMON-0005","Ignore process failure","REQ6595\nREQ9457\nREQ9266",1,"UT","A process failure may be ignored.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start  process from a test-execute test. \n2. Call RSysMonSession::Monitor() with EWaitForStart and time-out value of 100ms and EIgnoreProcessFailure. \n3. Configure the process via a commandline param to not rendevouz\n4. The test registers to be informed if a OS restart is initiated\n5. Kill the process\n6. After KThrottleTime the process is restarted but fails to rendezvous. \n7. So the System Monitor should once more restart the process which fails again. \n8. SysMon then execute the recover-policy which is EIgnoreFailure\n9. The test is waiting for a OS restart callback which is not expected because the recovery policy is EIgnoreFailure. If a callback occures the test fails.\n10. The test then assert the app isn't running.","Pass","Implemented"]
["APPFWK-SYSMON-0006","Self Monitoring with ignore failure.","REQ6594\nREQ6598\nREQ9457\nREQ9266",1,"UT","Self monitoring with ignore failure should not need any plat sec capability.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start a process from test-execute test. \n2. Make sure the process has NO caps\n3. Assert that Sysmon refuse recoverymethod ERestartOS for MonitorSelf\n4. Assert that Sysmon accept recoverymethod EIgnoreOnFailure for MonitorSelf\n5. Kill the process and let it restart.\n6. Bonusstep assert that commandline arguments is preserved when restarting process\n7. Cleanup and shutdown.","Pass","Implemented"]
["APPFWK-SYSMON-0007","Monitoring not yet started process.","REQ6594\nREQ6598\nREQ9457\nREQ9266",1,"UT","SysMon can not monitor a process that is not yet started.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\nCreate a RProcess and close the handle so that the RProcess contain a null handle. Use this RProcess to call RSysMonSession::Monitor() will all relevant parameters set.","Pass","Implemented"]
["APPFWK-SYSMON-0008","Cancel Monitoring.","REQ6601\nREQ9457\nREQ9266",1,"UT","Monitoring can be cancelled.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start a process from a test-execute test. \n2. Request monitoring of this process.\n3. Ask the process to cancel monitoring.\n4. Kill the process\n5. Assert that the process isn't restarted.","Pass","Implemented"]
["APPFWK-SYSMON-0009","Cancel Monitoring twice.","REQ6601\nREQ9457\nREQ9266",1,"UT","Cancelling monitor twice will work.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start a process from a test-execute test. \n2. Request monitoring of this process.\n3. Ask the process to cancel monitoring.\n3. Again - ask the process to cancel monitoring.\n4. Kill the process\n5. Assert that the process isn't restarted..","Pass","Implemented"]
["APPFWK-SYSMON-0010","Cancel Non-Monitored process.","REQ6601\nREQ9457\nREQ9266",1,"UT","Cancelling without monitoring should be ignored.","Below steps are carried out twice once using startupproperties and then with ssmstartupproperties.\n1. Start a process from a test-execute test. \n2. Do NOT request monitoring of this process.\n3. Ask the process to cancel monitoring.\n4. Kill the process\n5. Assert that the process isn't restarted.","Described above.","Implemented"]
["APPFWK-SYSMON-0062","OOM Test for RSysMonSession API's.","REQ9457\n",1,"UT","To ensure that there are no memory leaks created for the RSysMonSession API’s. ","Call RSysMonSession::OpenL MonitorL() and CancelMonitorSelfL() under out of memory conditions.","Test should complete without any memory leaks.","Implemented"]
["APPFWK-SYSMON-0058","Register a process for monitoring with ‘ECriticalNoRetries’ policy with the ProtServ capability","REQ9457\nREQ9107",1,"CIT","To ensure that a process with the ProtServ PlatSec capability can register a process for monitoring with the ‘ECriticalNoRetries’ policy.","The process to be registered must be running. The process to register the monitoring must have the ProtServ PlatSec capability.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nRegister the process with the ‘ECriticalNoRetries’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented"]
["APPFWK-SYSMON-0059","Register a process for monitoring with ‘ECriticalNoRetries’ policy with all capabilities except ProtServ","REQ9457\nREQ9107",1,"CIT","To ensure that a process with the all capabilities except ProtServ cannot register a process for monitoring with the ‘ECriticalNoRetries’ policy. ","The process to be registered must be running. The process to register the monitoring must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘ECriticalNoRetries’ policy.","The attempt to register the process returns ‘KErrPermissionDenied’.","Implemented"]
["APPFWK-SYSMON-0060","A process registers itself for monitoring with ‘ECriticalNoRetries’ policy with the ProtServ capability","REQ9457\nREQ9107",1,"CIT","To ensure that a process with the ProtServ PlatSec capability can register itself for monitoring with the ‘ECriticalNoRetries’ policy.","The process must have the ProtServ PlatSec capability.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register with the ‘ECriticalNoRetries’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented"]
["APPFWK-SYSMON-0061","A process registers itself for monitoring with ‘ECriticalNoRetries’ policy with all capabilities except ProtServ","REQ9457\nREQ9107",1,"CIT","To ensure that a process with the all capabilities except ProtServ cannot register itself for monitoring with the ‘ECriticalNoRetries’ policy. ","The process must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register with the ‘ECriticalNoRetries’ policy.","The attempt to self-register returns ‘KErrPermissionDenied’.","Implemented"]
["APPFWK-SYSMON-0054","Register a process for monitoring with retry limit = 1 and ‘ECriticalNoRetries’ policy fail the process","REQ9457\nREQ9107",1,"CIT","To ensure that when a process registered with ‘ECriticalNoRetries’ and a number of retries the failure policy is invoked immediately and no attempt is made to restart the process.","A process is registered with the ‘ECriticalNoRetries’ policy.\nFail the process.","The system is restarted and when restarted the process is not launched (and so is not registered). The slave process will have been run only once.","Implemented"]
["APPFWK-SYSMON-0055","A process’s failure policy will be enacted if the rate of failure exceeds the relaunch rate of failure interval.","REQ9457\nREQ9161",1,"CIT","To ensure that when a registered process fails more often than its retries count within the relaunch rate of failure interval its failure policy is invoked.","This test case is executed only on H4 board as the Relaunch rate of failure interval (which is a patchable constant) on emulator is 30mins (whereas on hardware it’s made as 25secs using the test iby file).\n1.A process is registered with the ‘EIgnoreOnFailure’ policy and a retry count of 1.\n2.Fail the process.\n3.The SysMon attempts to restart the process. The process will successfully start and rendezvous.\n4.Fail the process. (This should happen sooner than KIntervalForRelaunchRateofFailure after the first failure at 2.)","The SysMon doesn’t attempt to restart the process.","Implemented"]
["APPFWK-SYSMON-0056","A process can be restarted on failure if the rate of failure doesn’t exceed the relaunch rate of failure interval.","REQ9457\nREQ9161",1,"CIT","To ensure that when a registered process fails up to its retries count within the relaunch rate of failure interval and the time since the first failure then exceeds the interval a further failure of the process results in the process being restarted and not the invocation of the failure policy.","This test case is executed only on H4 board as the Relaunch rate of failure interval (which is a patchable constant) on emulator is 30mins (whereas on hardware it’s made as 25secs using the test iby file).\n1.A process is registered with the ‘EIgnoreOnFailure’ policy and a retry count of 1.\n2.Fail the process.\n3.The SysMon attempts to restart the process. The process will successfully start and rendezvous.\n4.Wait for KIntervalForRelaunchRateofFailure\n5.Fail the process.","The SysMon attempts to restart the process. The process will successfully start and rendezvous.","Implemented"]
["APPFWK-SYSMON-0057","Check the functionality of sysmon monitor using loadsysmon.dll","REQ9457",1,"CIT","To ensure that the dependency of ssmstartsafe on sysmoncli.lib has been resolved.","1. Create a test application \n2. Test app loads the loadsysmon.dll\n3. Test app opens a session with sysmoncli using loadsysmon interface.\n4. Test app tests the monitoring functionality of sysmoncli using the loadsysmon interface.\n5. Test app closes the sysmoncli session.\n6. Test app is closed.","Test Application should be terminated with KErrNone.","Implemented"]
["APPFWK-SYSMON-0017","Connect and disconnect from the monitoring process","\nREQ9457","Critical","CIT","To ensure that a process can open and close a session with the SysMon process.","Client process opens a connection to the SysMon process.\nClient process calls the Close() method. (There is no feedback from this – it cannot leave and does not return a status code.)","The call to Open() returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0018","Register a process for monitoring with ‘EIgnoreOnFailure’ policy with correct PlatSec capability","REQ6595\nREQ9457","Critical","CIT","To ensure that a process with the ProtServ PlatSec capability can be registered a process for monitoring with the ‘EIgnoreOnFailure’ policy.","The process to be registered must be running. The process to register the monitoring must have the ProtServ PlatSec capability.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nRegister the process with the ‘EIgnoreOnFailure’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0019","Register a process for monitoring with ‘EIgnoreOnFailure’ policy with all capabilities except ProtServ","REQ6595\nREQ9457","Critical","CIT","To ensure that a process with the wrong PlatSec capabilities cannot register a process for monitoring with the ‘EIgnoreOnFailure’ policy. (To show that the use of the capabilities is orthogonal.)","The process to be registered must be running. The process to register the monitoring must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘EIgnoreOnFailure’ policy.","The attempt to register the process returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0020","A process registers itself for monitoring with ‘EIgnoreOnFailure’ policy","REQ6595\nREQ9457","Critical","CIT","To ensure that a process without any PlatSec capabilities can register itself for monitoring with the ‘EIgnoreOnFailure’ policy.","The process that is to register itself has no PlatSec capabilities.\nThe process opens a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register with the ‘EIgnoreOnFailure’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0021","Register a process for monitoring with ‘ERestartOS’ policy with the ProtServ capability","REQ6596\nREQ9457","Critical","CIT","To ensure that a process with the ProtServ PlatSec capability can register a process for monitoring with the ‘ERestartOS’ policy.","The process to be registered must be running. The process to register the monitoring must have the ProtServ PlatSec capability.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nRegister the process with the ‘ERestartOS’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0022","Register a process for monitoring with ‘ERestartOS’ policy with all capabilities except ProtServ","REQ6596\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except ProtServ cannot register a process for monitoring with the ‘ERestartOS’ policy. ","The process to be registered must be running. The process to register the monitoring must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘ERestartOS’ policy.","The attempt to register the process returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0023","A process registers itself for monitoring with ‘ERestartOS’ policy with the ProtServ capability","REQ6596\nREQ9457","Critical","CIT","To ensure that a process with the ProtServ PlatSec capability can register itself for monitoring with the ‘ERestartOS’ policy.","The process must have the ProtServ PlatSec capability.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register with the ‘ERestartOS’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0024","A process registers itself for monitoring with ‘ERestartOS’ policy with all capabilities except ProtServ","REQ6596\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except ProtServ cannot register itself for monitoring with the ‘ERestartOS’ policy. ","The process must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register with the ‘ERestartOS’ policy.","The attempt to self-register returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0025","Register a process for monitoring with ‘ERestartOSWithMode’ policy with correct PlatSec capabilities","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the ProtServ and PowerMgmnt PlatSec capabilities can register a process for monitoring with the ‘ERestartOSWithMode’ policy.","The process to be registered must be running. The process to register the monitoring must have the ProtServ and PowerMgmnt PlatSec capabilities.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘ERestartOSWithMode’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0026","Register a process for monitoring with ‘ERestartOSWithMode’ policy with all capabilities except PowerMgmnt","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except PowerMgmnt cannot register a process for monitoring with the ‘ERestartOSWithMode’. (Ensuring that both PowerMgmnt and ProtServ are required.)","The process to be registered must be running. The process to register the monitoring must have all PlatSec capabilities except PowerMgmnt.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘ERestartOSWithMode’ policy.","The attempt to register the process returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0027","Register a process for monitoring with ‘ERestartOSWithMode’ policy with all capabilities except ProtServ","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except ProtServ cannot register a process for monitoring with the ‘ERestartOSWithMode’ policy. (Ensuring that both PowerMgmnt and ProtServ are required.)","The process to be registered must be running. The process to register the monitoring must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to register the process with the ‘ERestartOSWithMode’ policy.","The attempt to register the process returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0028","A process registers itself for monitoring with ‘ERestartOSWithMode’ policy with correct PlatSec capabilities","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the ProtServ and PowerMgmnt PlatSec capabilities can register itself for monitoring with the ‘ERestartOSWithMode’ policy.","The process to must have the ProtServ and PowerMgmnt PlatSec capabilities.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register the process with the ‘ERestartOSWithMode’ policy.\nThe process will attempt to deregister itself.","The attempt to register the process returns ‘KErrNone’. The attempt to deregister the process returns ‘KErrNone’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0029","A process registers itself for monitoring with ‘ERestartOSWithMode’ policy with all capabilities except PowerMgmnt","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except PowerMgmnt cannot register itself for monitoring with the ‘ERestartOSWithMode’ policy. (Ensuring that both PowerMgmnt and ProtServ are required.)","The process must have all PlatSec capabilities except PowerMgmnt.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register the process with the ‘ERestartOSWithMode’ policy.","The attempt to self-register returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0030","A process registers itself for monitoring with ‘ERestartOSWithMode’ policy with all capabilities except ProtServ","REQ6595 REQ6597\nREQ9457","Critical","CIT","To ensure that a process with the all capabilities except ProtServ cannot register itself for monitoring with the ‘ERestartOSWithMode’ policy. (Ensuring that both PowerMgmnt and ProtServ are required.)","The process must have all PlatSec capabilities except ProtServ.\nOpen a connection to the SysMon process. (This will return ‘KErrNone’.)\nAttempt to self-register the process with the ‘ERestartOSWithMode’ policy.","The attempt to self-register returns ‘KErrPermissionDenied’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0031","Register a process for monitoring that is system critical / System permanent","REQ6603\nREQ9457","Critical","CIT","To ensure that a process that is system critical cannot be registered.","1. A process is created that sets itself system critical.\nAttempt to register the process.\n2. A process is created that sets itself system permanent.\nAttempt to register the process.","The attempt to register the process returns ‘KErrNotSupported’.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0033","Register a process for monitoring with retry count = 0 ‘EIgnoreOnFailure’ policy fail the process","REQ6595 REQ6603\nREQ9457","Critical","CIT","To ensure that when a process is registered with a retry count of 0 and a policy of ‘EIgnoreOnFailure’ that no action is taken when the process fails.","A process is registered with the ‘EIgnoreOnFailure’ policy. \nFail the process.","No action is taken – the process should not be restarted and therefore no longer be registered. This is not an error so no error code is generated. The slave process will have been run once only.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0034","Register a process for monitoring with retry limit = 1 and ‘EIgnoreOnFailure’ policy fail the process","REQ6595 REQ6760\nREQ9457","Critical","CIT","To ensure that when a registered process fails during an attempt to restart it and the number of failed attempts is greater than the retry limit the failure policy is invoked.","A process is registered with the ‘EIgnoreOnFailure’ policy.\nFail the process.\nSysMon attempts to restart the process.\nThe attempt to restart the process fails.","The process is not restarted and no other action is taken – the process should no longer be registered. This is not an error so no error code is generated. In debug builds the failure to restart the process will be written to a log file. The slave process will have been run twice.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0035","Register a process for monitoring with retry limit = 1 and ‘ERestartOS’ policy fail the process","REQ6596 REQ6760\nREQ9457","Critical","CIT","To ensure that when a registered process fails during an attempt to restart it and the number of failed attempts is greater than the retry limit the failure policy is invoked.","A process is registered with the ‘ERestartOS’ policy.\nFail the process.\nSysMon attempts to restart the process.\nThe attempt to restart the process fails.","The system is restarted and when restarted the process is not launched (and so is not registered). In debug builds the failure to restart the process will be written to a log file. The slave process will have been run twice.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0036","Register a process for monitoring with retry limit = 1 and ‘ERestartOSWithMode’ policy fail the process","REQ6597 REQ6760\nREQ9457","Critical","CIT","To ensure that when a registered process fails during an attempt to restart it and the number of failed attempts is greater than the retry limit the failure policy is invoked.","A process is registered with the ‘ERestartOSWithMode’ policy.\nFail the process.\nSysMon attempts to restart the process.\nThe attempt to restart the process fails.","The system is restarted in the specified Start-up mode. In debug builds the failure to restart the process will be written to a log file. The slave process will have been run twice.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0037","Register a process for monitoring with retry limit = 2 fail the process twice in quick succession","REQ6600 REQ6603 REQ6830\nREQ9457","Critical","CIT","To ensure that when a registered process fails during an attempt to restart it and the number of failed attempts is less than the retry limit a further attempt is made to restart the process and the throttling mechanism is effective.","A process is registered. Failure policy is not important.\nFail the process.\nThe process will be restarted.\nImmediately fail the process again.","The process is restarted again once {patchable constant} (default 15) seconds have elapsed since the previous restart and reregistered.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0038","Register a process for monitoring with retry limit = 2 fail the process twice with a pause","REQ6600 REQ6603 REQ6830\nREQ9457","Critical","CIT","To ensure that when a registered process fails during an attempt to restart it and the number of failed attempts is less than the retry limit a further attempt is made to restart the process and the throttling mechanism does not go further than the defined limit.","A process is registered. Failure policy is not important.\nFail the process.\nThe process will be restarted.\nWait {patchable constant} (default 15) seconds.\nFail the process again.","The process is restarted again immediately and reregistered.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0039","Trigger a system restart attempt to register a process","REQ6599\nREQ9457","Critical","CIT","To ensure that a process cannot register while the system is restarting.","Register a process with the ’ERestartOS’ failure policy and retry count of 0.\nFail the process then immediately attempt to register another process. (The required capabilities are held.)","The attempt to register the process returns ‘KErrCancel’. The device restarts.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0040","Trigger a system restart fail a process (‘EIgnoreOnFailure’ policy)","REQ6599\nREQ9457","Critical","CIT","To ensure that a process that fails during system restart is not restarted.","Register a process with the ‘ERestartOS’ failure policy and retry count of 0.\nRegister a second process with the ‘EIgnoreOnFailure’ failure policy and retry count of 1. This process will write to a file to indicate the number of times it has been run.\nFail the first process then immediately fail the second process.","The second process is not restarted. The file written to will indicate only 1 run of the second process.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0041","Trigger a system restart fail a process (‘ERestartOS’ policy)","REQ6599\nREQ9457","Critical","CIT","To ensure that a process that fails during system restart is not restarted.","The process is registered with the ‘ERestartOSWithMode’ failure policy a mode that is different from the current one and a retry count of 0.\nRegister a second process with the ‘ERestartOS’ failure policy and retry count of 0.\nFail the first process then immediately fail the second process.","The system restarts in the mode specified by the first process’s registration.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0042","Trigger a system restart fail a process (‘ERestartOSWithMode’ policy)","REQ6599\nREQ9457","Critical","CIT","To ensure that a process that fails during system restart is not restarted.","The process is registered with the ‘ERestartOS’ failure policy and a retry count of 0.\nRegister a second process with the ‘ERestartOSWithMode’ failure policy a mode that is different from the default one and retry count of 0.\nFail the first process then immediately fail the second process.","The system restarts in the current startup mode (and specifically not in the mode specified by the second registration).","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0043","Use the new startup configuration format to register for process monitoring with ‘EIgnoreOnFailure’ policy.","REQ6604\nREQ9457","Critical","CIT","To ensure that a startup item with the required settings is correctly monitored.","Create a startup configuration that includes a process with the ‘EIgnoreOnFailure’ policy in the Critical Static startup state.\nBoot the device.","The process should be registered with the parameters defined in the startup configuration.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0044","Use the new startup configuration format to register for process monitoring with ‘EIgnoreOnFailure’ policy have the process fail during startup.","REQ6604\nREQ9457","Critical","CIT","To ensure that a failing startup item with the required settings correctly initiates its failure policy.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 EIgnoreOnFailure and monitor = 1. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nWhen SysStart loads the test application; it should not rendezvous successfully. The startup process should continue.\nA test-execute test should check this count value.","The count value should be 1. The test application should not be running.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0045","System restarts after process failure.","REQ6596 REQ6604\nREQ9457","Critical","CIT","System can restart if process fails to load while monitoring.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 ERestartOS and monitor = 1. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nFirst time SysStart loads the test application; it should rendezvous successfully but fail sometime afterwards after monitoring could take place. \nAs a result the test application will be reloaded by the SysMon. But this time it should fail before rendezvous. This will cause system restart.\nAfter restarting when SysStart loads the test process again it should succeed.\nA test-execute test should check this count value.","The count value should be 3.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0046","Use the new startup configuration format to register for process monitoring with ‘ERestartOS’ policy have the process fail during startup.","REQ6604\nREQ9457","Critical","CIT","To ensure that a failing startup item with the required settings correctly initiates its failure policy.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 ERestartOS and monitor = 1. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nFirst time SysStart loads the test application; it should not rendezvous successfully causing the system to restart. \nAfter restarting when SysStart loads the test process again it should succeed.\nA test-execute test should check this count value.","The count value should be 2.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0047","System restarts at a mode due to process failure.","REQ6597 REQ6604\nREQ9457","Critical","CIT","System can restart in a particular mode if process fails to load while monitoring.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 ERestartOSWithMode monitor = 1 and a particular mode. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nFirst time SysStart loads the test application; it should rendezvous successfully but fail sometime afterwards after monitoring begins. \nAfter restarting when SysStart loads the test process again it should succeed.\nA test-execute test should check this count value and the current mode.","The count value should be 2 startup mode should be the one requested.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0048","Use the new startup configuration format to register for process monitoring with ‘ERestartOSWithMode’ policy have the process fail during startup.","REQ6604\nREQ9457","Critical","CIT","To ensure that a failing startup item with the required settings correctly initiates its failure policy.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 ERestartOSWithMode monitor = 1 and a particular mode. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nFirst time SysStart loads the test application; it should not rendezvous successfully causing the system to restart in the specified mode. \nAfter restarting when SysStart loads the test process again it should succeed.\nA test-execute test should check this count value and the current mode.","The count value should be 2 startup mode should be the one requested.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0049","System restarts after process monitor initiation failure.","REQ6595 REQ6604\nREQ9457","Critical","CIT","System can restart if process fails after load but before initiation of monitor.","Create a SSC file which will contain an item for a test application with EStartupProcess2 EWaitForStart retry count = 0 ERestartOS and monitor = 1. The test application will be in the Critical Static section.\nThe test application records a count in a file to check whether it is being loaded first time or second time.\nFirst time SysStart loads the test application; it should rendezvous successfully but fail immediately afterwards before monitoring could take place. This will cause system restart.\nSecond time SysStart loads the test application it should succeed.\nA test-execute test should check this count value.","The count value should be 2.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0050","Register two processes started from the same executable.","REQ6603\nREQ9457","Critical","CIT","To ensure that two separate processes that were started from the same executable can both be registered.","Start two processes from the same executable file.\nAttempt to register both processes for monitoring.","Both processes are registered. (Both registration attempts return ‘KErrNone’)","Implemented","Tests written as part of PREQ1089"]
["APPFWK-SYSMON-0051","Register the same process twice.","REQ6595\nREQ9457","Critical","CIT","To ensure that attempts to register a process that is currently registered returns the correct error.","Start a process.\nRegister the process. (Registration details are not important.)\nAttempt to register the process a second time. (Registration details are not important.)","The second attempt to register the process returns ‘KErrAlreadyExists’.","Implemented","Tests written as part of PREQ1089"]

{"sheet":"StartSafe","index":1,"n_rows":23,"n_cols":13,"rows_kept":23,"flags":["formulas_cached_only"]}
["Test Case ID","Test Case Name","REQs Tested","Priority","Test Type","Test Purpose","Test Actions","Expected Results","Test Status","Comments"]
["APPFWK-STARTSAFE-0001","Process start.","REQ6600\nREQ9457",1,"UT","To ensure that the process can be started successfully.","Use CStartSafe::StartL() function to load the good TestApp as a process with EStartupProcess and EFireAndForget. Perform a comparison between the process name and test-app name","Names should match and be output to the log.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0002","Application start.","REQ6600\nREQ9457",1,"UT","To ensure that the application can be started successfully.","Use CStartSafe::StartL() function to load the good TestApp as an application with EStartupApp and EFireAndForget. Perform a comparison between the process name and test-app name.","Names should match and be output to the log.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0003","Process time-out at start.","REQ6600\nREQ9457",1,"UT","To ensure that error value is returned if times out.","Use CStartSafe::StartL() function to load the slow Test App as a process with EStartupProcess EWaitForStart and StartL should leave with an error code","The error code should be = KErrTimeOut.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0004","Application time-out at start.","REQ6600\nREQ9457",1,"UT","To ensure that error value is returned if times out.","Application time-out at start. Error value is returned. Use CStartSafe::StartL() function to load the slow Test App as an application with EStartupApp EWaitForStart. StartL should leave with an error code.","The error code should be = KErrTimeOut.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0005","Process starts within time-out.","REQ6600\nREQ9457",1,"UT","To ensure that the process can start within the times out time.","Use CStartSafe::StartL() function to load the slow Test App as a process with EStartProcess EWaitForStart. Allow sufficient time for the timeout such that the App should be found to have started albeit slowly. Perform a name comparison with the process-name","The anticipated process name is logged.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0006","Application starts within time-out.","REQ6600\nREQ9457",1,"UT","To ensure that the application starts within the timeout time.","Use CStartSafe::StartL() function to load the slow Test App as an application with EStartApp EWaitForStart. Allow sufficient time for the timeout such that th App should be found to have started albeit slowly. Perform a name comparison with the process-name","The anticipated process name is logged.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0007","Process start with retry.","REQ6600\nREQ9457",1,"UT","To ensure that the process starts at retry.","Use CStartSafe::StartL() function to load the TestAppRvAfterRetry test application as a process with EStartupProcess EWaitForStart. \nOn return the process name comparison is successfull and the 'tries' parameter matches the expected value (4).","The 'tries' parameter is logged and is correct.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0008","Application start with retry.","REQ6600\nREQ9457",1,"UT","To ensure that the application starts at retry.","Use CStartSafe::StartL() function to load the TestAppRvAfterRetry test-app as an application with EStartApp EWaitForStart. \nOn return  the tries parameter StartL leave code and process name are tested.","The 'tried' parameter is logged and is correct.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0009","Asynchronous Process Start","REQ6600\nREQ9457",1,"UT","It should be possible to start process asynchronously.","Use the asynchronous CStartSafe::StartL() function to load the good TestApp as a process with EStartProcess EDeferredWaitForStart. Await completion of the async call and check the StartL leave code TRequestStus and process name.","The process name is logged.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0010","Asynchronous Application Start","REQ6600\nREQ9457",1,"UT","Start an application asynchronously.","Use asynchronous CStartSafe::StartL() function to load the good Test-App as an application with EStartApp EDeferredWaitForStart. Await completion of the async call. Test the StartL leave code the TRequestStatus and the process name.","The application should start and the process name logged.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0011","Start process with monitoring","REQ6594\nREQ9457",1,"UT","After starting a process it should be possible to initiate monitoring.","Call StartAndMonitor() function to start the good Test-App process with EWaitForStart retry count = 1.Test the StartAndMonitorL leave code check for the existence of the process kill it and establish that the process is restarted..","Process name is logged.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0012","Check if IniAppArcServer causes problem in application start.","REQ9457",1,"UT","Call to IninAppArcServer should not cause problem to application start.","Invoke the good Test-App asynchronously with EStartApp EDeferredWaitForStart. Log the value of the TrequestStaus. Call InitAppArcServer. check that both TRSs completed with KErrNone.","Both TRSs completed with KErrNone.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0013","Check system restart on process failure","REQ6596\nREQ6604\nREQ9457",1,"UT","System should restart if process could not be started and ERestartOS were chosen.","The test step should derive from MSaveObserver so that while notifying SaveL() function gets called. Threading is required because StartSafe will block the thread calling StartL until the restart takes place (or max 5 seconds).\n1. thread1: Create CSaveNotifier\n2. thread1: Create a new thread\n3. thread1: Resume the new thread\n4. thread2: Using StartSafe start KTestAppNoRv with ERestartOS and retries=0\n5. thread1: Start scheduler and wait for callback\n6. thread1: Receive MSaveObserver callback stop scheduler\n7. thread1: Do assertions\n8. thread1: Cancel reboot.","SaveL() should get called within 10 sec.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0014","Check system restart when monitored aplication fails and TRecoveryPolicy=ERestartOS","REQ6596\nREQ6604\nREQ9457",1,"UT","System should restart if a monitored application fails when ERestartOS is chosen.","System should restart if process started with StartAndMonitorL with TRecoveryMethoid=ERestartOS is killed. The test step should derive from MSaveObserver so that while notifying SaveL() function gets called.","SaveL() should get called within 1 sec.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0015","Errors","REQ6596\nREQ6604\nREQ9457",1,"UT","Establish that erroneous conditions provoke anticipated error-handling behaviour","Present StartSafe with a succession of bloomers","Error codes are as expected","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0016","Application start Rendezvous error","REQ6596\nREQ6604\nREQ9457",1,"UT","Ensure that an application which rendezvous with an error is Kill()ed ","Invoke testapprverror.exe as an app. It starts but rendezvous with an error code (KErrGeneral)","Upon return from StartL() the process is not extant.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0017","Application start Rendezvous error","REQ6596\nREQ6604\nREQ9457",1,"UT","Ensure that a process which rendezvous with an error is Kill()ed ","Invoke testapprverror.exe as a process. It starts but rendezvous with an error code (KErrGeneral)","Upon return from StartL() the process is not extant.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTSAFE-0018","Application start panics","DEF127060",1,"CIT","To ensure that a process /application which panic's is terminated by StartSafe.","Use CStartSafe::StartL() function to load the faulty Test-App as a process with EStartupProcess / EStartupApp\nwith EWaitforStart. \nPerform a comparison between the process name and test-app name\nTest the process exit panic reason","The faulty Test-App process should not be found. The process completion code should be the panic code","Implemented"]
["APPFWK-STARTSAFE-0019","OOM Tests","DEF127061",2,"CIT","OOM Tests for StartSafe's StartL() method","Use CStartSafe::StartL() function to load the Test-App as a process with EStartupProcess / EStartupApp","The Test-App process should be found.","Implemented"]
[{"$nulls":12},"with EWaitforStart. "]
[{"$nulls":12},"Perform a comparison between the process name and test-app name"]
[{"$nulls":12},"Test the process exit panic reason"]

{"sheet":"Startupprop","index":2,"n_rows":3,"n_cols":10,"rows_kept":3,"flags":["formulas_cached_only"]}
["Test Case ID","Test Case Name","REQs Tested","Priority","Test Type","Test Purpose","Test Actions","Expected Results","Test Status","Comments"]
["APPFWK-STARTUPPROPERTIES-0001","Check default values.","REQ9457",1,"UT","Check CStartupProperties is created with correct default values.","Call CStartupProperties::NewL(). Call the accessor functions to see that the default values are correct. The default values are defined in the START_PROCESS_INFO2 block of startup.rh file – the only exception is iStartupType which should be EStartProcess.","The values should match.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-STARTUPPROPERTIES-0002","Check internalize and externalize.","REQ9457",1,"UT","Check internalize and externalize functions.","Create CStartupProperties and Change all the values to other than default values (consult the startup.rh) with modifier functions. Call ExternalizeL() to a buffer. Create another CStartupProperties and InternalizeL() from this buffer. These two CStartupPropterties should have same values – test with accessor functions. ExternalizeL this second object to a second buffer. First and second buffers should have same contents.","Described above.","Implemented","Tests written as part of PREQ1089"]

{"sheet":"Restartsys","index":3,"n_rows":3,"n_cols":10,"rows_kept":3,"flags":["formulas_cached_only"]}
["Test Case ID","Test Case Name","REQs Tested","Priority","Test Type","Test Purpose","Test Actions","Expected Results","Test Status","Comments"]
["APPFWK-RESTARTSYS-0001","Restart system in the current mode.","REQ6596\nREQ9457",1,"UT","Test restarting system in the default mode.","1. Registers itself for power-off notifications using CSaveNotifier. \n2. Calls the restart API to restart the system. \n3. Starts a scheduler and waits for a power-off notification that should be received. \n4. Uses CSaveNotifier::HandleError() function to cancel system restart.","Power-off notification should be received.","Implemented","Tests written as part of PREQ1089"]
["APPFWK-RESTARTSYS-0002","Restart system in a specified mode.","REQ6597\nREQ9457",1,"UT","Test restarting system in specified mode.","1. Registers itself for power client power-off notifications using CSaveNotifier. \n2. Calls the restart API with a specified test mode to restart the system. \n3. Start a scheduler and wait for power-off notification.\n4. Logs the time the restart notifications arrives to KDataFile\n5. Tries to delay the shutdown if the delay succeeds (which it should not) the KDataFile is updated with the new shutdowntime.\n6. Let the restart take place.\n7. After restart - Assert all expectations (restartmode that the restart took place within 1 second) and write to the Tef logfile.","Power-off notification should be received by the test server and the returned startup mode from HAL::Get() function should match the specified mode.","Implemented","Tests written as part of PREQ1089"]

{"sheet":"Doc Info","index":4,"n_rows":32,"n_cols":6,"rows_kept":32,"merged":[[0,1,0,5],[2,1,2,5],[3,4,3,5],[4,4,4,5],[5,4,5,5],[6,4,6,5],[7,4,7,5],[8,4,8,5],[10,1,10,5],[11,4,11,5],[12,4,12,5],[13,4,13,5],[14,4,14,5],[15,4,15,5],[16,4,16,5],[18,1,18,5],[20,1,20,5],[21,1,21,2],[21,3,21,5],[22,1,22,2],[22,3,22,5],[23,1,23,2],[23,3,23,5],[24,1,24,2],[24,3,24,5],[25,1,25,2],[25,3,25,5],[27,1,27,5]],"flags":["formulas_cached_only"]}
[null,"AFSS_SHMA_TestSpecification.xls"]
[]
[null,"About this Document"]
[null,"Document Reference","N/A","Authors","Mohammad Minhaz"]
[null,"Security Classification","Internal","Owners","AFSS"]
[null,"Team / Department","AFSS","Reviewers","Jonathon Price, Andrew Bevan, Jaimin Patel,Roger Planas Munso"]
[null,"Last Revised Date",null,"Contributors","Jonathan Price, Roger Planas, Martin Kristell, Sowmya Mysore, Mohammad Minhaz"]
[null,"Status","Issued","Approver","Hemang Shah, Krishnan Subramanian"]
[null,"Version","v1.0","Distribution"]
[]
[null,"References"]
[null,"No.","Document Reference","Version","Description"]
[null,"[R1]","SGL.GT0328.406",1,"PREQ871 Unit Test Specification.doc"]
[null,"[R2]","SGL.GT0328.403",1,"PREQ871 Integration Test Specification.doc"]
[null,"[R3]","SGL.GT0328.402",1,"PREQ1089 Unit Test Specification.doc"]
[null,"[R4]","SGL.GT0328.404",1,"PREQ1089 Integration Test Specification.doc"]
[]
[]
[null,"Open Issues"]
[]
[null,"Glossary"]
[null,"Term",null,"Definition"]
[null,"SysMon",null,"System Monitor"]
[null,"Startupprop",null,"Startup properties"]
[null,"Shma",null,"System Health Monitor Architecture"]
[null,"AFSS",null,"Application Framework and System State"]
[]
[null,"Document History"]
[null,"Date","Version","Status","Author","Description"]
[null,"2008-03-12","v0.1","Draft","Krishnan Subramanian","Made a separate test specification for shma component"]
[null,"2008-03-13","v1.0","Issued","Krishnan Subramanian","Issued for PREQ1871."]
[null,"2008-09-17","v1.1","Issued","Sowmya Mysore","Added new tests in startsafe"]

{"sheet":"Notes","index":5,"n_rows":6,"n_cols":4,"rows_kept":6,"merged":[[5,0,5,1]],"flags":["formulas_cached_only"]}
["Component","Sub-Component","# tests","Notes"]
["shma","SysMon",53,"Sowmya"]
["shma","StartSafe",19,"Sowmya"]
["shma","Startupprop",2,"Sowmya"]
["shma","Restartsys",2,"Sowmya"]
["TOTAL",null,76]