Test Studio Scheduling Service API Documentation
This documentation explains the use of the Test Studio Scheduling Service API. The Test Studio Scheduling Service handles all test run scheduling and execution in a distributed installation of Test Studio. The Storage Service API exposes this data using a RESTful web interface. The API exposes a set of endpoints that correspond to types of information about the Scheduling Service. The format for making calls to a specific endpoint is documented in the page for that endpoint.
Applications of the API
The Scheduling Service API allows developers to access data about the state of their Test Studio scheduling, including scheduled test runs and registered remote execution machines. A custom application can then format this information to produce reporting in arbitrary formats. This may facilitate reporting in custom formats or in formats compatible with proprietary technologies.
The Scheduling Service API also exposes calls to add data to the Scheduling Service, including the creation of new scheduled test runs. The Scheduling Service API validates objects sent with API calls before making changes to the Scheduling Service to prevent unexpected behaviors.
Example Telerik.TestStudio.Shared.Communication.Transports.TestListExecutionStatus object:
{
"Id": "GUID",
"TestListId": "GUID",
"NumberOfMinutesToKeepResults": "int",
"ResultWritten": "boolean"
}Example LicenseInfo object:
{
"AllocatedUsers": "int",
"MachineKey": "string"
}Parameters
Returns
Example:
{
"AllocatedUsers": "int",
"MachineKey": "string"
}Example Telerik.TestStudio.Shared.Communication.Transports.TestListExecutionStatus object:
{
"Id": "GUID",
"TestListId": "GUID",
"NumberOfMinutesToKeepResults": "int",
"ResultWritten": "boolean"
}Parameters
Returns
Example:
{
"GUID": {
"Id": "GUID",
"TestListId": "GUID",
"NumberOfMinutesToKeepResults": "int",
"ResultWritten": "boolean"
}
}Parameters
Returns
Example:
{
"Id": "GUID",
"TestListId": "GUID",
"NumberOfMinutesToKeepResults": "int",
"ResultWritten": "boolean"
}Example Telerik.TestStudio.Shared.Communication.Transports.Job object:
{
"Id": "GUID",
"Path": "string",
"PathType": "integer",
"Credentials": {
"StorageUri": "string"
},
"MachinesToUse": [
"machine1",
"machine2"
],
"Schedule": {
"DayOfMonth": "optional integer",
"DayOrdinal": "optional integer",
"DaysOfWeekMask": "integer",
"FirstDayOfWeek": "integer",
"Frequency": "integer",
"Interval": "integer",
"IsRecurring": "boolean",
"MaxOccurences": "optional integer",
"MonthOfYear": "optional integer",
"RecursUntil": "optional DateTime",
"TimeToRun": "DateTime"
},
"Notification": {
"AttachAiiResult": "boolean",
"AttachExcel": "boolean",
"AttachWord": "boolean",
"EmailsList": [
"a@company.com",
"b@company.com"
],
"Notify": "integer",
"ShowFailureInformation": "boolean",
"ShowGeneralInformation": "boolean",
"Subject": "email subject",
"TextAfter": "text",
"TextBefore": "text",
"TextBetween": "text"
},
"ProjectInfo": {
"ProjectSourceLocation": "path",
"SchedulingServerUri": "http://localhost:8015",
"SourceControlServerAddress": "http://tfs.host.domain:port",
"ProjectRemotePath": "uri",
"UseSourceControlVersion": "boolean"
},
"RootFolder": "string",
"Distributed": "boolean"
} Job.PathType allowable values: 0 = RelativeToProjectOnDiskJob.NotificationSettings.Notify allowable values:
1 = AbsoluteOnDisk
2 = Guid
3 = SourceControlWithLocalResults
4 = SourceControlWithCloudResults
0 = NeverNotifyJob.Schedule.DaysOfWeekMask allowable values:
1 = OnCompleteOrFailure
2 = OnExecutionFailure
3 = OnTestFailure
0 = NoneJob.Schedule.FirstDayOfWeek allowable values:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
62 = WeekDays
64 = Saturday
65 = WeekendDays
127 = EveryDay
0 = SundayJob.Schedule.Frequency allowable values:
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = None
1 = Secondly
2 = Minutely
3 = Hourly
4 = Daily
5 = Weekly
6 = Monthly
7 = Yearly
8 = Continuous
Parameters
Returns
Example:
[
{
"Id": "GUID",
"Path": "string",
"PathType": "integer",
"Credentials": {
"StorageUri": "string"
},
"MachinesToUse": [
"machine1",
"machine2"
],
"Schedule": {
"DayOfMonth": "optional integer",
"DayOrdinal": "optional integer",
"DaysOfWeekMask": "integer",
"FirstDayOfWeek": "integer",
"Frequency": "integer",
"Interval": "integer",
"IsRecurring": "boolean",
"MaxOccurences": "optional integer",
"MonthOfYear": "optional integer",
"RecursUntil": "optional DateTime",
"TimeToRun": "DateTime"
},
"Notification": {
"AttachAiiResult": "boolean",
"AttachExcel": "boolean",
"AttachWord": "boolean",
"EmailsList": [
"a@company.com",
"b@company.com"
],
"Notify": "integer",
"ShowFailureInformation": "boolean",
"ShowGeneralInformation": "boolean",
"Subject": "email subject",
"TextAfter": "text",
"TextBefore": "text",
"TextBetween": "text"
},
"ProjectInfo": {
"ProjectSourceLocation": "path",
"SchedulingServerUri": "http://localhost:8015",
"SourceControlServerAddress": "http://tfs.host.domain:port",
"ProjectRemotePath": "uri",
"UseSourceControlVersion": "boolean"
},
"RootFolder": "string",
"Distributed": "boolean"
}
] Job.PathType allowable values: 0 = RelativeToProjectOnDiskJob.NotificationSettings.Notify allowable values:
1 = AbsoluteOnDisk
2 = Guid
3 = SourceControlWithLocalResults
4 = SourceControlWithCloudResults
0 = NeverNotifyJob.Schedule.DaysOfWeekMask allowable values:
1 = OnCompleteOrFailure
2 = OnExecutionFailure
3 = OnTestFailure
0 = NoneJob.Schedule.FirstDayOfWeek allowable values:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
62 = WeekDays
64 = Saturday
65 = WeekendDays
127 = EveryDay
0 = SundayJob.Schedule.Frequency allowable values:
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = None
1 = Secondly
2 = Minutely
3 = Hourly
4 = Daily
5 = Weekly
6 = Monthly
7 = Yearly
8 = Continuous
Parameters
Returns
Example:
{
"Id": "GUID",
"Path": "string",
"PathType": "integer",
"Credentials": {
"StorageUri": "string"
},
"MachinesToUse": [
"machine1",
"machine2"
],
"Schedule": {
"DayOfMonth": "optional integer",
"DayOrdinal": "optional integer",
"DaysOfWeekMask": "integer",
"FirstDayOfWeek": "integer",
"Frequency": "integer",
"Interval": "integer",
"IsRecurring": "boolean",
"MaxOccurences": "optional integer",
"MonthOfYear": "optional integer",
"RecursUntil": "optional DateTime",
"TimeToRun": "DateTime"
},
"Notification": {
"AttachAiiResult": "boolean",
"AttachExcel": "boolean",
"AttachWord": "boolean",
"EmailsList": [
"a@company.com",
"b@company.com"
],
"Notify": "integer",
"ShowFailureInformation": "boolean",
"ShowGeneralInformation": "boolean",
"Subject": "email subject",
"TextAfter": "text",
"TextBefore": "text",
"TextBetween": "text"
},
"ProjectInfo": {
"ProjectSourceLocation": "path",
"SchedulingServerUri": "http://localhost:8015",
"SourceControlServerAddress": "http://tfs.host.domain:port",
"ProjectRemotePath": "uri",
"UseSourceControlVersion": "boolean"
},
"RootFolder": "string",
"Distributed": "boolean"
} Job.PathType allowable values: 0 = RelativeToProjectOnDiskJob.NotificationSettings.Notify allowable values:
1 = AbsoluteOnDisk
2 = Guid
3 = SourceControlWithLocalResults
4 = SourceControlWithCloudResults
0 = NeverNotifyJob.Schedule.DaysOfWeekMask allowable values:
1 = OnCompleteOrFailure
2 = OnExecutionFailure
3 = OnTestFailure
0 = NoneJob.Schedule.FirstDayOfWeek allowable values:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
62 = WeekDays
64 = Saturday
65 = WeekendDays
127 = EveryDay
0 = SundayJob.Schedule.Frequency allowable values:
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = None
1 = Secondly
2 = Minutely
3 = Hourly
4 = Daily
5 = Weekly
6 = Monthly
7 = Yearly
8 = Continuous
Expects a Telerik.TestStudio.Shared.Communication.Transports.Job in the request body.
If no Schedule object is supplied, the job will run immediately.
Credentials is optional. MachinesToUse and ProjectInfo are required to schedule/run a job.
Example:
{
"Id": "GUID",
"Path": "string",
"PathType": "integer",
"Credentials": {
"StorageUri": "string"
},
"MachinesToUse": [
"machine1",
"machine2"
],
"Schedule": {
"DayOfMonth": "optional integer",
"DayOrdinal": "optional integer",
"DaysOfWeekMask": "integer",
"FirstDayOfWeek": "integer",
"Frequency": "integer",
"Interval": "integer",
"IsRecurring": "boolean",
"MaxOccurences": "optional integer",
"MonthOfYear": "optional integer",
"RecursUntil": "optional DateTime",
"TimeToRun": "DateTime"
},
"Notification": {
"AttachAiiResult": "boolean",
"AttachExcel": "boolean",
"AttachWord": "boolean",
"EmailsList": [
"a@company.com",
"b@company.com"
],
"Notify": "integer",
"ShowFailureInformation": "boolean",
"ShowGeneralInformation": "boolean",
"Subject": "email subject",
"TextAfter": "text",
"TextBefore": "text",
"TextBetween": "text"
},
"ProjectInfo": {
"ProjectSourceLocation": "path",
"SchedulingServerUri": "http://localhost:8015",
"SourceControlServerAddress": "http://tfs.host.domain:port",
"ProjectRemotePath": "uri",
"UseSourceControlVersion": "boolean"
},
"RootFolder": "string",
"Distributed": "boolean"
} Job.PathType allowable values: 0 = RelativeToProjectOnDiskJob.NotificationSettings.Notify allowable values:
1 = AbsoluteOnDisk
2 = Guid
3 = SourceControlWithLocalResults
4 = SourceControlWithCloudResults
0 = NeverNotifyJob.Schedule.DaysOfWeekMask allowable values:
1 = OnCompleteOrFailure
2 = OnExecutionFailure
3 = OnTestFailure
0 = NoneJob.Schedule.FirstDayOfWeek allowable values:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
62 = WeekDays
64 = Saturday
65 = WeekendDays
127 = EveryDay
0 = SundayJob.Schedule.Frequency allowable values:
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = None
1 = Secondly
2 = Minutely
3 = Hourly
4 = Daily
5 = Weekly
6 = Monthly
7 = Yearly
8 = Continuous
Parameters
Returns
Expects a Telerik.TestStudio.Shared.Communication.Transports.Job in the request body. Example:
{
"Id": "GUID",
"Path": "string",
"PathType": "integer",
"Credentials": {
"StorageUri": "string"
},
"MachinesToUse": [
"machine1",
"machine2"
],
"Schedule": {
"DayOfMonth": "optional integer",
"DayOrdinal": "optional integer",
"DaysOfWeekMask": "integer",
"FirstDayOfWeek": "integer",
"Frequency": "integer",
"Interval": "integer",
"IsRecurring": "boolean",
"MaxOccurences": "optional integer",
"MonthOfYear": "optional integer",
"RecursUntil": "optional DateTime",
"TimeToRun": "DateTime"
},
"Notification": {
"AttachAiiResult": "boolean",
"AttachExcel": "boolean",
"AttachWord": "boolean",
"EmailsList": [
"a@company.com",
"b@company.com"
],
"Notify": "integer",
"ShowFailureInformation": "boolean",
"ShowGeneralInformation": "boolean",
"Subject": "email subject",
"TextAfter": "text",
"TextBefore": "text",
"TextBetween": "text"
},
"ProjectInfo": {
"ProjectSourceLocation": "path",
"SchedulingServerUri": "http://localhost:8015",
"SourceControlServerAddress": "http://tfs.host.domain:port",
"ProjectRemotePath": "uri",
"UseSourceControlVersion": "boolean"
},
"RootFolder": "string",
"Distributed": "boolean"
} Job.PathType allowable values: 0 = RelativeToProjectOnDiskJob.NotificationSettings.Notify allowable values:
1 = AbsoluteOnDisk
2 = Guid
3 = SourceControlWithLocalResults
4 = SourceControlWithCloudResults
0 = NeverNotifyJob.Schedule.DaysOfWeekMask allowable values:
1 = OnCompleteOrFailure
2 = OnExecutionFailure
3 = OnTestFailure
0 = NoneJob.Schedule.FirstDayOfWeek allowable values:
1 = Sunday
2 = Monday
4 = Tuesday
8 = Wednesday
16 = Thursday
32 = Friday
62 = WeekDays
64 = Saturday
65 = WeekendDays
127 = EveryDay
0 = SundayJob.Schedule.Frequency allowable values:
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
0 = None
1 = Secondly
2 = Minutely
3 = Hourly
4 = Daily
5 = Weekly
6 = Monthly
7 = Yearly
8 = Continuous
Parameters
Returns
Parameters
Returns
{
"CancelledTestListId": [
"GUID",
"GUID"
]
}Parameters
Returns
{
"machinename": {
"HostAddress": "http://machine.network.com:55555/",
"Load": 0.3387502495508121,
"RunningProcesses": 1,
"OperatingSystem": "Microsoft Windows NT 6.1.7601 Service Pack 1",
"State": 0,
"Details": {
"MachineName": "machinename",
"RamMB": 16384,
"NumberLogicalCores": 8,
"CurrentRamMB": 7229,
"CurrentCPUPercentage": 0.3387502495508121,
"OperatingSystem": {
"_version": "6.1.7601.65536",
"_platform": 2,
"_servicePack": "Service Pack 1"
},
"Is64Bit": true,
"InstalledBrowsers": [
{
"Type": 1,
"Version": "9.10.9200.16614"
},
{
"Type": 2,
"Version": "21.0 (en-US)"
},
{
"Type": 7,
"Version": ""
}
]
}
}
} State Lookup: 0 = AliveInstalled Browsers contains a list of web browsers installed on the execution server.
1 = Unreachable
2 = Dead
3 = NotReported
4 = Removed
Browser Type Lookup:
0 = Not Set,
1 = Internet Explorer,
2 = FireFox,
3 = ASP.NET InProc Host that acts as a browser and request processor,
4 = Internally used for the UI Designer,
5 = Safari,
6 = SLLauncher.exe running Silverlight apps
7 = Google Chrome
8 = Native Windows application
Parameters
Returns
{
"machinename": {
"HostAddress": "http://machine.network.com:55555/",
"Load": 0.3387502495508121,
"RunningProcesses": 1,
"OperatingSystem": "Microsoft Windows NT 6.1.7601 Service Pack 1",
"State": 0,
"Details": {
"MachineName": "machinename",
"RamMB": 16384,
"NumberLogicalCores": 8,
"CurrentRamMB": 7229,
"CurrentCPUPercentage": 0.3387502495508121,
"OperatingSystem": {
"_version": "6.1.7601.65536",
"_platform": 2,
"_servicePack": "Service Pack 1"
},
"Is64Bit": true,
"InstalledBrowsers": [
{
"Type": 1,
"Version": "9.10.9200.16614"
},
{
"Type": 2,
"Version": "21.0 (en-US)"
},
{
"Type": 7,
"Version": ""
}
]
}
}
} State Lookup: 0 = AliveInstalled Browsers contains a list of web browsers installed on the execution server.
1 = Unreachable
2 = Dead
3 = NotReported
4 = Removed
Browser Type Lookup:
0 = Not Set,
1 = Internet Explorer,
2 = FireFox,
3 = ASP.NET InProc Host that acts as a browser and request processor,
4 = Internally used for the UI Designer,
5 = Safari,
6 = SLLauncher.exe running Silverlight apps
7 = Google Chrome
8 = Native Windows application
Example:
{
"ProcessManagerUri": "http://localhost:55555/",
"AlternateProcessManagerUris": [
"http://localhost:55555/"
],
"MachineDetail": {
"MachineName": "MOCK_machine",
"RamMB": 16384,
"NumberLogicalCores": 8,
"CurrentRamMB": 9409,
"CurrentCPUPercentage": 99.123456789,
"OperatingSystem": {
"_version": "6.1.7601.65536",
"_platform": 2,
"_servicePack": "Service Pack 1"
},
"Is64Bit": true,
"InstalledBrowsers": [
{
"Type": 1,
"Version": "9.10.9200.16576"
},
{
"Type": 2,
"Version": "21.0 (en-US)"
}
]
},
"Processes": [
{
"Name": "profiler",
"ServicePath": "http://localhost:8032/",
"FailedPings": 0
}
],
"State": 0
} State Lookup: 0 = AliveInstalled Browsers contains a list of web browsers installed on the execution server.
1 = Unreachable
2 = Dead
3 = NotReported
4 = Removed
Browser Type Lookup:
0 = Not Set,
1 = Internet Explorer,
2 = FireFox,
3 = ASP.NET InProc Host that acts as a browser and request processor,
4 = Internally used for the UI Designer,
5 = Safari,
6 = SLLauncher.exe running Silverlight apps
7 = Google Chrome
8 = Native Windows application
Parameters
Returns
Parameters
Returns
Each plugin object has a different structure depending on the plugin type.
Example Emailer plugin:
{
"Telerik.TestStudio.ExecutionManager.Notifications.Emailer.PostListExecutionEmailer": {
"Message": "Unable to send email due to uninitialized SMTP settings",
"CanSendEmail": false,
"Host": "",
"Port": 25
}
} Example Bug Tracking plugin: {
"ArtOfTest.WebAii.Design.Execution.BugTracking.BugTrackingExecutionExtension": null
}Parameters
Returns
Example Telerik.TestStudio.Shared.Communication.Transports.ProcessInformation object:
{
"Name": "executor",
"ServicePath": "http://name.domain.com:8032/",
"FailedPings": 0,
"CurrentCPU": 98.85212,
"CurrentRAM": 42.515625
}