You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
444 lines
33 KiB
444 lines
33 KiB
/*++
|
|
|
|
Copyright (c) 2000-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
TstINIConfigPriv.hxx
|
|
|
|
Abstract:
|
|
|
|
Contains the definitions of each section in the INI file, including default
|
|
values. If a new key name is added to the INI file, this file must be
|
|
modified.
|
|
|
|
Author:
|
|
|
|
Stefan R. Steiner [ssteiner] 05-16-2000
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef __H_TSTINICONFIGPRIV_
|
|
#define __H_TSTINICONFIGPRIV_
|
|
|
|
//
|
|
// Boolean type. If m_bCanHaveRandom is False, then random is
|
|
// not a valid value in the option's value field. If it is true,
|
|
// the option can specify random which allows the components to
|
|
// dynamically decide if the value should be true or false.
|
|
//
|
|
struct SVsTstINIBooleanDef
|
|
{
|
|
EVsTstINIBoolType m_eBoolDefault;
|
|
BOOL m_bCanHaveRandom;
|
|
};
|
|
|
|
//
|
|
// String definition. If there is a fixed set of strings
|
|
// which are allowed by this option, then specify those strings
|
|
// in the m_pwszPossibleValues field. Separate each string
|
|
// with a '|' character. e.g. if the strings are: "Here", "There"
|
|
// and "Anywhere", then the string must be defined as:
|
|
// L"Here|There|Anywhere". The m_pwszDefaultString must be one
|
|
// of the strings in the possible values set in this case unless it is
|
|
// L"". If the option value can be any string, specify NULL in m_pwszPossibleValues.
|
|
//
|
|
struct SVsTstINIStringDef
|
|
{
|
|
LPWSTR m_pwszDefaultString; // Can be L""
|
|
LPWSTR m_pwszPossibleValues;
|
|
};
|
|
|
|
//
|
|
// Number definition. If this value can't have a range, then
|
|
// m_ullDefaultMinNumber specifies the default value and
|
|
// m_ullDefaultMaxNumber is not used.
|
|
//
|
|
struct SVsTstININumberDef
|
|
{
|
|
LONGLONG m_llDefaultMinNumber;
|
|
LONGLONG m_llDefaultMaxNumber;
|
|
BOOL m_bCanHaveRange;
|
|
LONGLONG m_llMinNumber;
|
|
LONGLONG m_llMaxNumber;
|
|
};
|
|
|
|
struct SVsTstINISectionDef
|
|
{
|
|
LPWSTR m_pwszKeyName;
|
|
EVsTstINIOptionType m_eOptionType;
|
|
|
|
//
|
|
// If type Boolean, this field is important
|
|
//
|
|
SVsTstINIBooleanDef m_sBooleanDef;
|
|
|
|
//
|
|
// If type String, this field is important
|
|
//
|
|
SVsTstINIStringDef m_sStringDef;
|
|
|
|
//
|
|
// If type Number, this field is important
|
|
//
|
|
SVsTstININumberDef m_sNumberDef;
|
|
|
|
LPWSTR m_pwszDescription;
|
|
};
|
|
|
|
//
|
|
// Since C++ initializers can't properly initialize unions, the SVsTstINISectionDef
|
|
// explicitly defines each structure. The following defines help keep the
|
|
// section definition arrays "easy to read."
|
|
//
|
|
#define VS_NOBOOL { eVsTstBool_False, FALSE }
|
|
#define VS_NOSTR { NULL, NULL }
|
|
#define VS_NONUM { 0, 0, FALSE, 0, 0 }
|
|
#define VS_COMMENT L"",eVsTstOptType_Comment,VS_NOBOOL,VS_NOSTR,VS_NONUM
|
|
#define VS_END_OF_SECTION {NULL,eVsTstOptType_Unknown,VS_NOBOOL,VS_NOSTR,VS_NONUM,NULL}
|
|
|
|
SVsTstINISectionDef sVsTstINISectionDefController[] =
|
|
{
|
|
{ VS_COMMENT, L"Controls the test controller" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"RandomSeed", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { -1, 0, FALSE, -1, 0xFFFFFFFF },
|
|
L"Controls the reproducibility of the test, if -1, the value is random." },
|
|
{ L"MaxTestTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { ( 60 * 60 ), 0, FALSE, 1, 0xFFFFFFFF },
|
|
L"Maximum test time in seconds. Test terminates with failure if this time is exceeded." },
|
|
{ VS_COMMENT, L"The next set of variables control the activities of the coordinator:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"CoordinatorStart", eVsTstOptType_String, VS_NOBOOL, { L"No", L"No|Start|Stop|Restart" }, VS_NONUM,
|
|
L"Controls the state of the coordinator at the start of the test. No means nothing is done to start or stop "
|
|
L"the coordinator a the beginning of the test; start means the snapshot service is started at the beginning "
|
|
L"of the test; stop means that the snapshot service is stopped at the beginning of the test; restart means "
|
|
L"the service is first stopped and then started." },
|
|
{ L"CoordinatorStop", eVsTstOptType_String, VS_NOBOOL, { L"No", L"No|EndOfTest|Gracefully|Abnormally" }, VS_NONUM,
|
|
L"Controls when the coordinator is stopped. No means the coordinator is not sopped; EndOfTest means the snapshot "
|
|
L"service is stopped at the end of the test; Gracefully mean the snapshot service is stopped sometime in the middle "
|
|
L"of the test; Abnormally means the snapshot service is killed (equivalent of kill -f) at some point during the "
|
|
L"test. Both Gracefully and Abnormally require a value for CoordinatorStopTime be set." },
|
|
{ L"DeleteExistingSnapshots", eVsTstOptType_Boolean, { eVsTstBool_True, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Delete all snapshots that exist at the time the test is started"},
|
|
{ L"CoordinatorStopTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 10, 30, TRUE, 0, 0xFFFFFFFF },
|
|
L"Range in seconds for the time between the start of the test or after the coordinator was last stopped, "
|
|
L"that the coordinator should be terminated." },
|
|
{ L"DisableLovelace", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Causes a special version of the coordinator to be run which does not invoke Lovelace. This can be used "
|
|
L"in conjunction with a special test provider to allow tests to be run without involving physical volumes." },
|
|
{ L"FailLovelace", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Cause a special version of the coordinator to run which simulates various failures when invoking Lovelace "
|
|
L"such as running out of disk space." },
|
|
{ VS_COMMENT, L"The next set of variables involves test controller creation of processes for writers, providers, "
|
|
L"and backup applications:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"ProcessesToStart", eVsTstOptType_String, VS_NOBOOL, { L"VssTestWriter.DEFAULT, VssTestRequestor.DEFAULT", NULL }, VS_NONUM,
|
|
L"A comma delimited list of all the processes that the controller will start. The processes are identified in the "
|
|
L"form of VssTestWriter.NAME, VssTestRequestor.NAME, and VssTestProvider.NAME. The names must be defined as a "
|
|
L"section in this scenario INI file." },
|
|
VS_END_OF_SECTION
|
|
};
|
|
|
|
SVsTstINISectionDef sVsTstINISectionDefWriter[] =
|
|
{
|
|
{ VS_COMMENT, L"Controls the test writer executable. The first set of options control the writer process(es):" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"UserAccount", eVsTstOptType_String, VS_NOBOOL, { L"Administrator", L"Administrator|BackupOperator|PowerUser|User|Guest" }, VS_NONUM,
|
|
L"Controls which account is used to run this particular executable. Note that individual test executables will enable/disable "
|
|
L"backup privileges based on their scenario inputs." },
|
|
{ L"NumberOfProcesses", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 1, 0, FALSE, 1, 0xFF },
|
|
L"Number of writer processes of this type to be used." },
|
|
{ L"ProcessStart", eVsTstOptType_String, VS_NOBOOL, { L"BeginningOfTest", L"BeginningOfTest|Randomly" }, VS_NONUM,
|
|
L"When to start each process of this type. Randomly requires that ProcessStartTime be specified." },
|
|
{ L"ProcessStartTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 10, TRUE, 0, 0xFFFFFF },
|
|
L"Range in seconds used for determine when to start the next process of this type. Only used if Randomly is specified "
|
|
L"for ProcessStart." },
|
|
{ L"ProcessStop", eVsTstOptType_String, VS_NOBOOL, { L"Self", L"Self|EndOfTest|Gracefully|Abnormally" }, VS_NONUM,
|
|
L"When the process is stopped. Self means that the process should terminate itself gracefully before the end of the "
|
|
L"test; EndOfTest means that the process should be killed at the end of the test; Gracefully means that the process "
|
|
L"should be notified to terminate itself gracefully; Abnormally means that the process will be terminated by the "
|
|
L"controller using the equivalent of (kill -f). Both Gracefully and Abnormally require that ProcessStopTime be "
|
|
L"specified." },
|
|
{ L"ProcessStopTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 30, 120, TRUE, 0, 0xFFFFFF },
|
|
L"Range in seconds for the lifetime of the process." },
|
|
{ L"ProcessRestart", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether the process should be restarted after it is stopped. The interval between the process stop and process "
|
|
L"restart is controlled by the ProcessStart and ProcessStartTime." },
|
|
{ L"ProcessExecutable", eVsTstOptType_String, VS_NOBOOL, { L"VssTestWriter.exe", NULL }, VS_NONUM,
|
|
L"The path name to the executable to be run. The path name may include environment variables." },
|
|
{ L"ProcessCommandLine", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"Command-line parameters that are provided to the executable. Note that additional command-line parameters will "
|
|
L"be supplied to conforming test executables." },
|
|
{ L"ConformingExecutable", eVsTstOptType_Boolean, { eVsTstBool_True, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether the executable is implemented according to the guidelines of a conforming test executable." },
|
|
|
|
{ VS_COMMENT, L"Metadata subsection. Controls how the writer identifies itself and how the WRITER_METADATA document"
|
|
L"is produced. The following options effect the call to the CVssWriter::Initialize method:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"WriterType", eVsTstOptType_String, VS_NOBOOL, { L"BootableSystemState", L"BootableSystemState|SystemService|UserData" }, VS_NONUM,
|
|
L"Identifies the type of data supplied by the writer." },
|
|
{ L"WriterClassId", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"If specified, then this GUID is used for all instances of this writer. If not specified, then a unique class id is used for "
|
|
L"each instance of this writer.." },
|
|
{ L"WriterName", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"If specified this is the friendly name used for all instances of this writer. If not specified, then a unique name is "
|
|
L"generated for each instance of this writer." },
|
|
{ L"WriterDataSourceType", eVsTstOptType_String, VS_NOBOOL, { L"TransactedDB", L"TransactedDB|NonTransactedDB|Other|Random" }, VS_NONUM,
|
|
L"Specifies the data source type of the applications/service this writer is written for." },
|
|
{ L"WriterFreezeLevel", eVsTstOptType_String, VS_NOBOOL, { L"BackEnd", L"Applicaton|BackEnd|System|Random" }, VS_NONUM,
|
|
L"Specifies when the writer performs its freeze." },
|
|
{ L"WriterFreezeTimeout", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Range in seconds for the lifetime of the process." },
|
|
{ VS_COMMENT, L"Metadata subsection #2. Effect the construction of the metadata document in the overridden "
|
|
L"CVssWriter::OnIdentify method:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"NumberofIncludeFiles", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of include file specifications in the metadata." },
|
|
{ L"IncludeFilesAlternatePath", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether to include an alternate path in a include file specification." },
|
|
{ L"IncludeFilesRecursive", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether include file specifications should be recursive vs. shallow." },
|
|
{ L"NumberOfExcludeFiles", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of exclude file specifications in the metadata." },
|
|
{ L"ExcludeFilesRecursive", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether exclude file specifications should be recursive or shallow." },
|
|
{ L"NumberofDatabaseComponents", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
|
|
L"Number of database components in the metadata." },
|
|
{ L"NumberOfFileGroupComponents", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of file group components in the metadata." },
|
|
{ L"ComponentCaption", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether to include a caption with each component." },
|
|
{ L"ComponentIcon", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether to include an icon with each component." },
|
|
{ L"NumberOfLogicalPathNames", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of names in the logical path for a component." },
|
|
{ L"NumberOfDatabaseFiles", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of database files to include with a database component." },
|
|
{ L"NumberOfDatabaseLogFiles", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of database log files to include with a database component." },
|
|
{ L"NumberOfFileGroupFiles", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of files to include with a file group component." },
|
|
{ L"AlternatePathForFileGroupFiles", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"whether to include an alternate path for the." },
|
|
{ L"FilesGroupFilesRecursive", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether file group file specification includes the recursive option." },
|
|
{ L"RestoreMethod", eVsTstOptType_String, VS_NOBOOL, { L"ReplaceAtReboot", L"RestoreIfNotThere|RestoreIfCanReplace|StopRestartService|RestoreToAlternateLocation|ReplaceAtReboot|Custom" }, VS_NONUM,
|
|
L"" },
|
|
{ L"UserProcedureSupplied", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether a user procedure is supplied in the restore method." },
|
|
{ L"WriterRestoreInvoked", eVsTstOptType_String, VS_NOBOOL, { L"Always", L"Always|Never|IfRestoredToAlternateLocation|Random" }, VS_NONUM,
|
|
L"Value of writer restore invocation." },
|
|
{ L"RebootRequiredAtRestore", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether reboot is required after restore is complete." },
|
|
{ L"AlternateMappingCount", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 2, 4, TRUE, 0, 0xFFFFFF },
|
|
L"Number of alternate mappings created for the restore.." },
|
|
{ L"AlternateMappingsRecursive", eVsTstOptType_Boolean, { eVsTstBool_True, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"WWhether alternate mappings are recursive or not." },
|
|
|
|
{ VS_COMMENT, L"Test writer behaviors. If EnableTestFailures is TRUE, then the generic writer will behave correctly, i.e. will not "
|
|
L"fail any events and will not produce any erroneous documents. The behaviors are designed to "
|
|
L"either simulate failures or perform specific tests." },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"EnableWriterTestFailures", eVsTstOptType_Boolean, { eVsTstBool_False, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Enables the writer behavior errors as specified by the options following this option." },
|
|
{ L"FailAtState", eVsTstOptType_String, VS_NOBOOL, { L"", L"OnIdentify|OnPrepareBackup|OnPrepareSnapshot|OnFreeze|OnThaw|OnBackupComplete|OnRestore|OnAbort|All" }, VS_NONUM,
|
|
L"Fail at a on of a particular set of states occasionally (see FailureRate)." },
|
|
{ L"FailureRate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to generate a failure." },
|
|
{ L"HangAtState", eVsTstOptType_String, VS_NOBOOL, { L"", L"OnIdentify|OnPrepareBackup|OnPrepareSnapshot|OnFreeze|OnThaw|OnBackupComplete|OnRestore|OnAbort|All" }, VS_NONUM,
|
|
L"Hang for a certain amount of time in a particular state occasionally (see HangTime and HangRate)." },
|
|
{ L"HangTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Time to hang in milliseconds." },
|
|
{ L"HangRate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to hang in a state." },
|
|
{ L"GenerateBadWriterMetadataRate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often during an OnIdentify method bogus writer metadata is generated. Bogus metadata is generated by modifying "
|
|
L"the document obtained by calling IvssCreateWriterMetadata::GetDocument and then modifying the XML document to not "
|
|
L"conform to the schema for writer metadata." },
|
|
{ L"ModifyComponentsDocument", eVsTstOptType_String, VS_NOBOOL, { L"No", L"No|Binary|XML|Random" }, VS_NONUM,
|
|
L"Whether to modify the BACKUP_COMPONENTS document in the OnBackupPrepare state. Binary indicates that binary metadata "
|
|
L"is added; XML indicates that an XML subtree is added." },
|
|
{ L"InvalidModifyComponents Document", eVsTstOptType_String, VS_NOBOOL, { L"", L"OnBackupComplete|OnRestore|Random" }, VS_NONUM,
|
|
L"Erroneously attempt to modify the BACKUP_COMPONENTS document in either the OnBackupComplete or OnRestore state." },
|
|
{ L"InvalidModifyComponentsDocument Rate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to perform an invalid modification." },
|
|
{ L"TerminationAfterNSnapshots", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Terminate writer gracefully after some number of snapshot cycles have occurred." },
|
|
{ L"TerminateAfterTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Terminate writer gracefully after some amount of time has passed." },
|
|
|
|
{ VS_COMMENT, L"Additional test writer logging options:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"DumpWriterMetadataDocument", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"write out the writer metadata XML document that is produced in the OnIdentify Method." },
|
|
{ L"DumpComponentsDocument", eVsTstOptType_String, VS_NOBOOL, { L"", L"OnPrepareBackupBefore|OnPrepareBackupAfter|OnBackupComplete|OnRestore" }, VS_NONUM,
|
|
L"In the specified states dump out the BACKUP_COMPONENTS document. OnPrepareBackupBefore refers to the document prior to "
|
|
L"modifying the document in the OnPrepareBackup state; OnPrepareBackupAfter refers to the document after modifying it in "
|
|
L"the OnPrepareBackup state." },
|
|
VS_END_OF_SECTION
|
|
};
|
|
|
|
SVsTstINISectionDef sVsTstINISectionDefProvider[] =
|
|
{
|
|
VS_END_OF_SECTION
|
|
};
|
|
|
|
SVsTstINISectionDef sVsTstINISectionDefRequester[] =
|
|
{
|
|
{ VS_COMMENT, L"Controls the test requester (Backup) executable. The first set of options control the requester process:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"UserAccount", eVsTstOptType_String, VS_NOBOOL, { L"Administrator", L"Administrator|BackupOperator|PowerUser|User|Guest" }, VS_NONUM,
|
|
L"Controls which account is used to run this particular executable. Note that individual test executables will enable/disable "
|
|
L"backup privileges based on their scenario inputs." },
|
|
{ L"ProcessStart", eVsTstOptType_String, VS_NOBOOL, { L"BeginningOfTest", L"BeginningOfTest|Randomly" }, VS_NONUM,
|
|
L"When to start the process. Randomly requires that ProcessStartTime be specified." },
|
|
{ L"ProcessStartTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 10, TRUE, 0, 0xFFFFFF },
|
|
L"Range in seconds used for determine when to start the process. Only used if Randomly is specified "
|
|
L"for ProcessStart." },
|
|
{ L"ProcessStop", eVsTstOptType_String, VS_NOBOOL, { L"Self", L"Self|EndOfTest|Gracefully|Abnormally" }, VS_NONUM,
|
|
L"When the process is stopped. Self means that the process should terminate itself gracefully before the end of the "
|
|
L"test; EndOfTest means that the process should be killed at the end of the test; Gracefully means that the process "
|
|
L"should be notified to terminate itself gracefully; Abnormally means that the process will be terminated by the "
|
|
L"controller using the equivalent of (kill -f). Both Gracefully and Abnormally require that ProcessStopTime be "
|
|
L"specified." },
|
|
{ L"ProcessStopTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 30, 120, TRUE, 0, 0xFFFFFF },
|
|
L"Range in seconds for the lifetime of the process." },
|
|
{ L"ProcessRestart", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether the process should be restarted after it is stopped. The interval between the process stop and process "
|
|
L"restart is controlled by the ProcessStart and ProcessStartTime." },
|
|
{ L"ProcessExecutable", eVsTstOptType_String, VS_NOBOOL, { L"VssTestBackup.exe", NULL }, VS_NONUM,
|
|
L"The path name to the executable to be run. The path name may include environment variables." },
|
|
{ L"ProcessCommandLine", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"Command-line parameters that are provided to the executable. Note that additional command-line parameters will "
|
|
L"be supplied to conforming test executables." },
|
|
{ L"ConformingExecutable", eVsTstOptType_Boolean, { eVsTstBool_True, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Specifies whether the executable is implemented according to the guidelines of a conforming test executable." },
|
|
|
|
{ VS_COMMENT, L"Requester metadata subsection. The backup application simulates actions performed by NtBackup or some other backup "
|
|
L"application. This subsection of the scenario describes the content of the BACKUP_COMPONENTS document produced by "
|
|
L"the backup application:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"TypeOf Backup", eVsTstOptType_String, VS_NOBOOL, { L"Full", L"Full|Incremental|Differential|Other|Random" }, VS_NONUM,
|
|
L"Description of the type of backup being performed." },
|
|
{ L"BootableSystemStateBackup", eVsTstOptType_Boolean, { eVsTstBool_True, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Whether the backup includes bootable system state." },
|
|
{ L"BackingUp", eVsTstOptType_String, VS_NOBOOL, { L"Volumes", L"Volumes|Components|Serial|Random" }, VS_NONUM,
|
|
L"Whether the backup is being performed on volumes or on specific components."
|
|
L"Serial means that multiple backups are done serially on volumes so"
|
|
L"multiple snapshot sets are active at a time."},
|
|
{ L"VolumeList", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"Set of volume names that can be used for the backup. If not specified then only volumes physically on the system are used." },
|
|
{ L"ExcludeVolumes", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"Set of volume names that are excluded from the backup. If not specified then only volumes physically on the system are used." },
|
|
{ L"VolumeBackup", eVsTstOptType_String, VS_NOBOOL, { L"All", L"All|Some|One" }, VS_NONUM,
|
|
L"All means all the volumes on the system or all the volumes in the VolumeList; VolumeSelection means the set of volumes "
|
|
L"specified in the VolumeSelection variable; Some means 1 or more volumes from the set of volumes on the system or "
|
|
L"the volume list; One means exactly one volume chosen from the set of volumes on the system or in the volume list." },
|
|
{ L"FileSystemBackup", eVsTstOptType_String, VS_NOBOOL, { L"All", L"All|NTFS|FAT32|FAT16|RAW|NTFS,FAT32|NTFS,FAT32,FAT16|FAT32,FAT16" }, VS_NONUM,
|
|
L"Selects which volumes are snapshoted based on file systems on them."
|
|
},
|
|
{ L"FillVolumes", eVsTstOptType_String, VS_NOBOOL, { L"None", L"None|Random|Selected|Random,Fragment|Selected,Fragment" }, VS_NONUM,
|
|
L"Selected means that the volumes from the FillVolumeSelection are filled"
|
|
L"Random means a random selection of volumes are filled"
|
|
L"Fragment means that the filled volumes are fragemented" },
|
|
{ L"FillVolumesList", eVsTstOptType_String, VS_NOBOOL, { L"", NULL }, VS_NONUM,
|
|
L"Which volumes to fill" },
|
|
{ L"ComponentBackup", eVsTstOptType_String, VS_NOBOOL, { L"All", L"All|AllDatabase|AllFileGroup|SomeDatabase|SomeFileGroup|Some|One" }, VS_NONUM,
|
|
L"Which components to backup: All means that all components specified in the WRITER_METADATA for all writers are included in the backup; "
|
|
L"AllDatabase means that all database components for all writers are included; AllFileGroup means that all file groups from all writers "
|
|
L"are included; SomeDatabase means a random selection of database components are included; SomeFileGroup means a random selection of "
|
|
L"file groups are included; Some means a random selection of components are included; One means that exactly one component is included." },
|
|
{ VS_COMMENT, L"Test requester behaviors. If EnableTestFailures is TRUE, then the requester will behave correctly, i.e. will not "
|
|
L"will not fail any events. The behaviors are designed to "
|
|
L"either simulate failures or perform specific tests." },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"EnableTestRequesterFailures", eVsTstOptType_Boolean, { eVsTstBool_False, TRUE }, VS_NOSTR, VS_NONUM,
|
|
L"Enables the requester behavior errors as specified by the options following this option." },
|
|
{ L"MetadataGathering", eVsTstOptType_String, VS_NOBOOL, { L"", L"GatherOnce|GatherMultipleTimes|Skip" }, VS_NONUM,
|
|
L"Determines when IVssBackupComponents::GatherWriterMetadata is called. Note that it is invalid to not call GatherWriterMetadata "
|
|
L"prior to calling PrepareBackup. It is valid to call GatherWriterMetadata multiple times during the sequence." },
|
|
{ L"InvalidSkipGatherWriterMetadata", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to invalidly skip calling GatherWriterMetadata." },
|
|
{ L"InvalidFreeWriterMetadata", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to invalidly call FreeWriterMetadata without calling GatherWriterMetadata." },
|
|
{ L"InvalidSkipCreateSnapshotSet", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to skip calling Create Snapshot or call it out of sequence." },
|
|
{ L"InvalidAddToSnapshotSet", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to call AddToSnapshotSet either before calling CreateSnapshot, after PrepareBackup, or with multiple times with the same volume." },
|
|
{ L"InvalidPrepareBackup", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to call PrepareBackup out of sequence (before AddToSnapshotSet or after DoSnapshotSet) or is skipped." },
|
|
{ L"WaitInterval", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, FALSE, 0, 0xFFFFFF },
|
|
L"Time interval between queries in Async call." },
|
|
{ L"CancelPrepareBackup", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Time interval during which cancel is called if Prepare Backup is not complete." },
|
|
{ L"InvalidDoSnapshotSet", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often to call DoSnapshotSet out of sequence or skip calling it." },
|
|
{ L"CancelDoSnapshotSet", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Time interval during which cancel is called if DoSnapshotSet is not complete." },
|
|
{ L"MarkComponentsAsSuccessfullyBackedUp", eVsTstOptType_String, VS_NOBOOL, { L"", L"None|Some|All" }, VS_NONUM,
|
|
L"How many components are marked as successfully backed up." },
|
|
{ L"InvalidBackupComplete", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often BackupComplete is called out of sequence." },
|
|
{ L"SkipBackupComplete", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often Backup Complete is skipped. Note that this is not an error condition, just simulates a failed or abruptly terminated backup application." },
|
|
{ L"InvalidDeleteSnapshotSet", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Call delete snapshot set out of sequence." },
|
|
{ L"CancelBackupComplete", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Time interval during which cancel is called if BackupComplete has not finished." },
|
|
{ L"InvalidAddAlternateLocationMapping", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often AddAlternateLocationMapping is called during a backup. This is not only valid for restore." },
|
|
{ L"InvalidRestore", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often Restore is called during a backup. This is only valid during a restore." },
|
|
{ L"SimulateRestore", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often is Restore simulated using the data that was just successfully backed up." },
|
|
{ L"InvalidInvocationDuringRestore", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"How often an invalid operation (CreateSnapshotSet, BackupComplete, PrepareBackup, AddVolumeToSnapshotSet, various methods to construct "
|
|
L"BackupComponents document.) is called during a backup." },
|
|
{ L"AddAlternateLocationMappingsDuringRestore", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"add alternate location mappings for some components during restore." },
|
|
{ L"CancelRestore", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Time interval during which cancel is called if restore is not finished." },
|
|
{ L"TerminateAfterNBackups", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Terminate Backup application after N backups are performed." },
|
|
{ L"TerminateAfterTime", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Terminate Backup application after some number of seconds have elapsed." },
|
|
|
|
{ VS_COMMENT, L"The set of behaviors outlined below are designed to test interaction between backup and the bootable system "
|
|
L"state writer (wrtrshim). This includes the functions SimulateSnaphshotFreeze and SimulateSnapshotThaw functions used "
|
|
L"to obtain system state and system service data to be backed up in the case the snapshot fails." },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"RegisterWrtrshim", eVsTstOptType_String, VS_NOBOOL, { L"", L"No|Correctly|Incorrectly" }, VS_NONUM,
|
|
L"Controls whether the bootable system state writer is registered or not. Incorrectly implies that the shim is unregistered "
|
|
L"without being registered or registered multiple times." },
|
|
{ L"RegisterWrtrshimFailure Rate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"controls how often an improper registration is generated." },
|
|
{ L"SimulateSnapshotFreeze", eVsTstOptType_String, VS_NOBOOL, { L"", L"No|Correctly|Incorrectly" }, VS_NONUM,
|
|
L"Controls whether the bootable system state writer is called to simulate a freeze and thaw in order to generate bootable "
|
|
L"state backup data. Incorrectly implies various failures like calling SimulateSnapshotThaw without calling "
|
|
L"SimulateSnapshotFreeze; calling SimulateSnapshotFreeze multiple times, etc." },
|
|
{ L"SimulateSnapshotFreezeFailureRate", eVsTstOptType_Number, VS_NOBOOL, VS_NOSTR, { 0, 0, TRUE, 0, 0xFFFFFF },
|
|
L"Controls how often improper use of the SimulateSnapshotFreeze and SimulateSnapshotThaw APIs occur." },
|
|
{ L"ValidateWrtrshim", eVsTstOptType_Boolean, { eVsTstBool_False, FALSE }, VS_NOSTR, VS_NONUM,
|
|
L"Validate the data produced by the wrtrshim after a snapshot is created correctly or SimulateSnapshotFreeze succeeds. "
|
|
L"A log record is sent to the Test Controller to indicate the result of this validation test." },
|
|
|
|
{ VS_COMMENT, L"Additional test requester logging options:" },
|
|
{ VS_COMMENT, NULL },
|
|
{ L"WriterStatus", eVsTstOptType_String, VS_NOBOOL, { L"", L"GatherWriterMetadata|PrepareBackup|DoSnapshotSet|BackupCompete|Restore|All" }, VS_NONUM,
|
|
L"Log the status of the writers after the specified method(s) are called." },
|
|
{ L"WriterMetadata", eVsTstOptType_String, VS_NOBOOL, { L"", L"None|First|All" }, VS_NONUM,
|
|
L"Create a temporary file with the writer metadata for all the writers after the first GatherWriterMetadata in a backup "
|
|
L"sequence or after all GatherWriterMetadata calls. The name of the temporary file is logged to the snapshot controller." },
|
|
{ L"ComponentsDocument", eVsTstOptType_String, VS_NOBOOL, { L"", L"BeforePrepareBackup|AfterPrepareBackup|BeforeBackupComplete|BeforeRestore" }, VS_NONUM,
|
|
L"Create a temporary file with the BackupComponents document at the particular state. The name of the temporary file is "
|
|
L"logged to the snapshot controller." },
|
|
{ L"QueryCoordinator", eVsTstOptType_String, VS_NOBOOL, { L"", L"Providers|Snapshots|SnapshotSets|SnapshotSetVolumes|SnapshotSetsByProvider|SnapshotSetsByVolume" }, VS_NONUM,
|
|
L"Create a temporary file with the result of various queries against the coordinator. The name of the temporary file is logged "
|
|
L"to the snapshot controller." },
|
|
|
|
VS_END_OF_SECTION
|
|
};
|
|
|
|
#endif // __H_TSTINICONFIGPRIV_
|