-
Notifications
You must be signed in to change notification settings - Fork 388
/
test-profile.xsd
679 lines (673 loc) · 36.3 KB
/
test-profile.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:annotation>
<xs:documentation xml:lang="en">
Phoronix Test Suite / OpenBenchmarking.org XML Test Profile Specification
Copyright (C) 2008 - 2021, Phoronix Media
Copyright (C) 2008 - 2021, Michael Larabel
</xs:documentation>
</xs:annotation>
<xs:include schemaLocation="types.xsd" />
<xs:element name="PhoronixTestSuite">
<xs:complexType>
<xs:sequence>
<xs:element name="TestInformation" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="TitleString" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_title</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>The title of the test profile / the program under test. The title is shown on the test profile, the test results/graphs, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AppVersion" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_app_version</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The AppVersion is the application/program version, if relevant, for the workload being tested. This is used for showing on the test results and elsewhere while the actual test profile is versioned separately.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Description" type="DescriptionString" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_description</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>A summary of the program/application being benchmarked or a description of what the test profile is testing.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ResultScale" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_result_scale</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>The result scale string, if relevant for the test. Common result scales include Frames Per Second, MB/s, GFLOPS, Seconds, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Proportion" type="Proportion" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_result_proportion</get>
<set></set>
<default>HIB</default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>HIB or LIB are relevant values for the Proportion to indicate if higher results are better (HIB) or lower is better (LIB) depending upon result scale.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ResultQuantifier" type="ResultQuantifier" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_result_quantifier</get>
<set></set>
<default>AVG</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>The ResultQuantifier is used for specifying what to do with the results from multiple test runs. The default behavior if not specified is AVG to average the results of multiple runs to determine the final result. Other supported options are MAX for reporting the maximum result of multiple test runs or MIN for reporting the minimum result of multiple runs, rather than the average.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DisplayFormat" type="DisplayFormat" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_display_format</get>
<set></set>
<default>BAR_GRAPH</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>The DisplayFormat is used to determine the kind of result provided / how to display the result. By default if not specified the value is BAR_GRAPH and is the most practical display format for a majority of the test cases.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SubTitle" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_test_subtitle</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The SubTitle is a description string that is displayed underneath the title on test result graphs if the test profile has no options or other information to show in that place. The SubTitle is most often a short description of what's being tested.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Executable" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_test_executable</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The Executable is the name of the bash/shell script file to be called from the home directory of the test profile installation to actually run the test. By default if this tag is not set, the name of the test profile itself is assumed to be the script file to call.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TimesToRun" type="TimesToRun" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_times_to_run</get>
<set></set>
<default>3</default>
</xs:appinfo>
<xs:documentation>TimesToRun specifies the default behavior for how many times the test profile should run before determining the average/min/max results (see ResultQuantifier for those alternatives). Test profiles commonly run their tests at least three times for accuracy while some longer-running programs may opt to run their test just once.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IgnoreRuns" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_runs_to_ignore</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>IgnoreRuns can be used by test profiles running their test case multiple times via TimesToRun. The value specified is the run number to ignore and to not save/utilize the result of this run. IgnoreRuns is commonly used with a value of 1 if wanting to ignore the first test run for purposes of warming up a cache, generating a data-set on first run, or other use-cases where you may want to ignore the result of a program on its first run.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="InstallationAgreement" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_installation_agreement_message</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>InstallationAgreement can be a string of text to be shown as an installation agreement or if a HTTP/HTTPS URL is specified, the text of that URL will be fetched and displayed to the user. After displaying the arbitrary text, the user will be prompted if they agree to the text. If the user agrees, the installation will proceed otherwise the test profile installation will be aborted.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PreInstallMessage" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_pre_install_message</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>PreInstallMessage allows for arbitrary text to be presented to the user prior to running the test installation process. This can be notes about any steps that may need to be manually done for installing/running a test or other useful information to the user.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PostInstallMessage" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_post_install_message</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>PostInstallMessage allows for any arbitrary static text to be presented to the user after running the test installation process.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TestProfile">
<xs:complexType>
<xs:sequence>
<xs:element name="Version" type="VersionString">
<xs:annotation>
<xs:appinfo>
<get>get_test_profile_version</get>
<set></set>
<default>1.0.0</default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>Version is used to specify the version of the test profile itself, separate from the version of the application/workload under test. The Version string is expected to be formatted in an X.Y.Z format. Whenever modifying the test profile, the version must always be bumped so the user is aware there were test profile changes. If only the Z number is bumped, it's implied that the changes are minimal and do not affect the outcome of the test for purposes of comparing test results. The Z number is commonly used when just updating the test XML descriptions, updating URLs, etc. When the X or Y version is bumped, it tells the Phoronix Test Suite that it's a larger change and the test results of that new version should not be compared to any previous test profile revision.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SupportedPlatforms" type="PlatformString" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_supported_platforms</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
<dynamic_list_multi>pts_types.known_operating_systems</dynamic_list_multi>
</xs:appinfo>
<xs:documentation>SupportedPlatforms is used for listing the supported software platforms / operating systems that the test profile is compatible with. Currently recognized options include Linux, Windows, BSD, MacOSX, and Solaris. Multiple platforms can be specified when delimited by a common and space. If no restrictions, the tag can be blank.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SoftwareType" type="SoftwareType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_test_software_type</get>
<set></set>
<default>Application</default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>SoftwareType is used for indicating the category to which the test profile falls under. Supported options include BaseTestProfile (uncommon, for use with the Cascading Test Profiles / TestExtends functionality), Utility, Simulator, Scientific, Benchmark, Application, or Game. The SoftwareType is mostly used for reference purposes and sorting of results and display purposes.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TestType" type="TestType" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_test_hardware_type</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>TestType is used for indicating the computer subsystem that the test workload utilizes. Supported options include System, Processor, Disk, Graphics, Memory, Network, and Other.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="License" type="License" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_license</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>License is used for indicating to the user what type of software/code license the program under test utilizes. Supported options are Free, Non-Free, Retail, and Restricted. Free indicates open-source/free software, Non-Free is used for commercial freeware / closed-source software, Retail is for commercial software where you likely need to own a copy of the program for the test profile to work, and restricted is intended for internal/restricted software that is likely not publicly available.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Status" type="ProfileStatus" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_status</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>Status is used for indicating the status of the test profile if it's Verified (official/expected to be working), Unverified (may have problems), Private (intended only for private use), Broken (known to be in a broken state), Experimental, or Deprecated (no longer maintained/relevant/supported).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SupportedArchitectures" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_supported_architectures</get>
<set></set>
<default></default>
<dynamic_list_multi>pts_types.known_architectures</dynamic_list_multi>
</xs:appinfo>
<xs:documentation>SupportedArchitectures is used for specifying the CPU architecture's supported by the program under test. This option is commonly just used for closed-source/binary-only programs that may be limited to running on a particular architecture. Common values are x86 and x86_64. Multiple supported architectures can be specified when delimited by a comma. If no restrictions, the tag can be blank.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ExternalDependencies" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_external_dependencies</get>
<set></set>
<default></default>
<dynamic_list_multi>pts_types.all_possible_external_dependencies</dynamic_list_multi>
</xs:appinfo>
<xs:documentation>ExternalDependencies is used for specifying any external dependencies the test profile may need for correct installation/execution. This is generally used for specifying if a compiler toolchain is needed, Python, PHP, various build dependencies, etc. A list of supported external dependencies can be found via the Phoronix Test Suite documentation or by looking in pts-core/external-dependencies/xml/. Multiple external dependencies can be specified by delimiting each dependency with a comma.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extends" type="TestExtends" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_test_extension</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>Extends is an uncommon option relied upon for Cascading Test Profiles if one test profile is dependent upon another test profile's test installation or inheriting its test profile XML values, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresRoot" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_root_required</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresRoot allows a value of TRUE or FALSE if the test requires root/administrator rights for successfully running the test. By default the value is assumed to FALSE. If TRUE, the Phoronix Test Suite will attempt to prompt the user at run-time for their root/sudo password to run the test with elevated permissions if the user is not currently the root/administrator.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresRootInstall" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_root_install_required</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresRootInstall allows a value of TRUE or FALSE if the test requires root/administrator rights for successfully installing the test on the system. By default the value is assumed to FALSE. If TRUE, the Phoronix Test Suite will attempt to prompt the user at install-time for their root/sudo password to install the test with elevated permissions if the user is not currently the root/administrator.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresDisplay" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_display_required</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresDisplay allows a value of TRUE or FALSE if the test requires a display server / monitor to be attached for the test to run, i.e. the test requires the ability to launch a GUI window or similar in order for the test to execute. By default the value is assumed to FALSE unless the TestType is set to 'Graphics' and then it is assumed to be TRUE for GPU tests. If TRUE, the Phoronix Test Suite will skip tests from execution if no display server is believed to be running.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresNetwork" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_network_required</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresNetwork allows a value of TRUE or FALSE if the test requires a working network connection to successfully run the test. By default the value is assumed to FALSE. If TRUE, the Phoronix Test Suite will attempt to prompt the user at run-time if a network connection is needed for the test but the Phoronix Test Suite has networking support disabled or no network connection appears to be working. If the TestType of the test profile is 'Network', this value is assumed to be TRUE.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="InstallRequiresInternet" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_internet_required_for_install</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>InstallRequiresInternet allows a value of TRUE or FALSE if the test requires a working Internet connection to successfully install the test. By default the value is assumed to FALSE. If TRUE, the Phoronix Test Suite will attempt to prompt the user at run-time if an Internet connection is needed for the test installation but the Phoronix Test Suite has Internet support disabled or no Internet connection appears to be working. InstallRequiresInternet is mainly for test profiles that may be cloning from a Git repository or manually downloading files from within the test install script, outside of the scope of the downloads.xml functionality where caching may be handled and where the Phoronix Test Suite already manages the network/downloading behavior.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresInternet" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>is_internet_required</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresInternet allows a value of TRUE or FALSE if the test requires a working Internet connection to successfully run the test. By default the value is assumed to FALSE. If TRUE, the Phoronix Test Suite will attempt to prompt the user at run-time if an Internet connection is needed for the test but the Phoronix Test Suite has Internet support disabled or no Internet connection appears to be working. RequiresInternet is mainly for test profiles that may be cloning from a Git repository or manually downloading files from within the script at run-time, outside of the scope of the downloads.xml functionality where caching may be handled and where the Phoronix Test Suite already manages the network/downloading behavior. Use the InstallRequiresInternet tag if only needing Internet at install-time and not run-time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="EnvironmentSize" type="PositiveDecimal" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_environment_size</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>EnvironmentSize is used for indicating the approximate size of the installed test. Integer and floating point values are supported and assumed to be Megabytes. This is for informational purposes and the Phoronix Test Suite does check the amount of free disk space of the system prior to installing a test to verify sufficient storage capacity.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="EnvironmentTestingSize" type="PositiveDecimal" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_environment_testing_size</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>EnvironmentTestingSize is used for indicating the approximate size of the test during execution if it's to be greater than the EnvironmentSize. This is mainly useful for disk/storage benchmarks that may generate large files temporarily during the benchmarking process, so the Phoronix Test Suite can ensure there is sufficient free space on the disk prior to execution. The value is specified in Megabytes.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="EstimatedTimePerRun" type="PositiveInteger" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_estimated_run_time</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>This option can be used for specifying the number of seconds each test run is expected to take. EstimatedTimePerRun is used for informational purposes to let the user know approximately how long the test execution may take. If this value is not specified, the Phoronix Test Suite relies upon statistics collected by OpenBenchmarking.org for determining the average test time for a given test profile as well as how long the test profile has taken to run previous times on the same system.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ProjectURL" type="URLString" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_project_url</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>ProjectURL allows for an informational URL for indicating the upstream software under test if the user would like to learn more about the program/application/software.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RepositoryURL" type="URLString" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_repo_url</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>RepositoryURL allows specifying the URL of the project's Git/SVN/source repository for the software under test if different from the ProjectURL. E.g. the GitHub source site versus project site.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresCoreVersionMin" type="CoreVersion" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>requires_core_version_min</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresCoreVersionMin is used if the test profile depends upon Phoronix Test Suite test profile features recently introduced. The value is the Phoronix Test Suite core version number, e.g. Phoronix Test Suite 7.8 has a version number of 7800. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequiresCoreVersionMax" type="CoreVersion" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>requires_core_version_max</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>RequiresCoreVersionMax is used if the test profile relies upon functionality the Phoronix Test Suite may have deprecated or removed. The value is the Phoronix Test Suite core version number, e.g. Phoronix Test Suite 7.8 has a version number of 7800. RequiresCoreVersionMax is an uncommon setting with the Phoronix Test Suite tending to not intentionally break compatibility with any existing test profiles/features.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="InternalTags" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_internal_tags_raw</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>InternalTags is used for specifying run-time hints about the program under test with arbitrary values like OpenMP, SMP, Python, and other values that can be detected when searching for a test profile.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Maintainer" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_maintainer</get>
<set></set>
<default></default>
<flags>TEST_REQUIRES</flags>
</xs:appinfo>
<xs:documentation>Maintainer is used to indicate the person(s) responsible for maintaining the test profile.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AllowResultsSharing" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>allow_results_sharing</get>
<set></set>
<default>TRUE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>AllowResultsSharing is assumed to be TRUE by default and can be set to FALSE if the user should not share these results publicly. The behavior is if a test profile has AllowResultsSharing to FALSE, the Phoronix Test Suite will not prompt the user whether they would like to upload the results to OpenBenchmarking.org.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AutoSaveResults" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>do_auto_save_results</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>Rather than prompting the user whether they would like to save the test results, setting AutoSaveResults to TRUE will force the user to save the test results. This option shouldn't be needed unless the test profile's results are only logical if viewed on a graph.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RemoveInstallDirectoryOnReinstall" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>do_remove_test_install_directory_on_reinstall</get>
<set></set>
<default>TRUE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>By default when a test is re-installed, the Phoronix Test Suite will first delete all files within that directory to ensure a clean environment. If the test script can sanely handle an install without deleting the files first, this tag can be used with the FALSE value. This option is primarily useful if having a test that takes a long time to install/build while the test profile setup process can cleanly and gracefully re-install that would shorten that install/build time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SystemDependencies" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_system_dependencies</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>SystemDependencies is a newer alternative to ExternalDependencies but is only supported on select platforms. SystemDependencies attempts to manage the external dependencies automatically if on a platform where the package manager can handle reverse dependency solving or for example on Debian/Ubuntu operating systems if apt-file is installed. The value is a list of program binary names, header files, or libraries to pass to the respective reverse dependency solver of the host operating system in trying to meet any dependencies needed to run this test profile.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TestSettings" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Default" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Arguments" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_default_arguments</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>Arguments is a static list of parameters to always be passed to the test profile's script at run-time. Arguments are the first arguments to be passed to the test profile script followed by any test run option parameters.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PostArguments" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_default_post_arguments</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>PostArguments is a static list of parameters to always be passed to the test profile's script at run-time that will be passed at the end of the string, following any test run options.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AllowCacheShare" type="Boolean" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>allow_cache_share</get>
<set></set>
<default>FALSE</default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>If a test profile by default outputs information covering all possible test options that may be present, AllowCacheShare can be set to TRUE to indicate the test result can be shared/used by any other invocation of the test profile run in a given result file. This is an uncommon option.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MinimumLength" type="PositiveDecimal" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_min_length</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>MinimumLength can be used to specify the time (in seconds) any test profile run will need at a minimum for indicating a successful run. If the test is to always need to run at least 60 seconds and MininLength is set to 60, if a test run ends prior to that threshold (e.g. the process was killed), the test result will not be recorded.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MaximumLength" type="PositiveDecimal" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_max_length</get>
<set></set>
<default></default>
<flags>UNCOMMON</flags>
</xs:appinfo>
<xs:documentation>MaximumLength can be used to specify the time (in seconds) that the test profile should finish within if relevant. If the test run takes longer than this value, the test result value is not recorded.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Option" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:appinfo>
<get>get_test_option_objects_array</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation></xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="DisplayName" type="xs:string">
<xs:annotation>
<xs:appinfo>
<get>get_name</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The name of a test option, as presented to the user, such as resolution, test type, etc.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Identifier" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_option_identifier</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>An internal identifier to associate with the test run option.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ArgumentPrefix" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_option_prefix</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>Any string that should be statically passed prior to the test run script prior to the selected option's value.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ArgumentPostfix" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_option_postfix</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>Any string that should be statically passed to the test run script immediately after the selected option's value.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DefaultEntry" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_option_default_raw</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The default option number to use (or most common) in case the user does not select one of the options to run. This is an uncommon option.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Message" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_helper_message</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>Message allows passing any arbitrary string to the Phoronix Test Suite for displaying next to the option display name.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Menu" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Entry" maxOccurs="unbounded" minOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>get_options_array</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation></xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>NAME</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The name of the option, which is then displayed as part of the sub-title on result graphs and used for identifying the test run.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Value" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>VALUE</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>The value that will be passed to the test run script as part of the arguments/parameters.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Message" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:appinfo>
<get>MESSAGE</get>
<set></set>
<default></default>
</xs:appinfo>
<xs:documentation>Message allows passing any arbitrary string to the Phoronix Test Suite for displaying next to the Name when showing possible test options.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>