summaryrefslogtreecommitdiff
path: root/scripts/Controller.ice
blob: a4b8d6b4ae068b7a893f41253b04a1cb812306d8 (plain)
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
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//

module Test
{

module Common
{

sequence<bool> BoolSeq;
sequence<string> StringSeq;

class Config
{
    optional(1) string protocol;
    optional(2) bool mx;
    optional(3) bool serialize;
    optional(4) bool compress;
    optional(5) bool ipv6;
    optional(6) StringSeq cprops;
    optional(7) StringSeq sprops;
}

class OptionOverrides
{
    optional(1) StringSeq protocol;
    optional(2) BoolSeq mx;
    optional(3) BoolSeq serialize;
    optional(4) BoolSeq compress;
    optional(5) BoolSeq ipv6;
}

exception TestCaseNotExistException
{
    string reason;
}

exception TestCaseFailedException
{
    string output;
}

interface TestCase
{
    string startServerSide(Config config)
        throws TestCaseFailedException;

    string stopServerSide(bool success)
        throws TestCaseFailedException;

    string runClientSide(string host, Config config)
        throws TestCaseFailedException;

    void destroy();
}

interface Controller
{
    TestCase* runTestCase(string mapping, string testsuite, string testcase, string cross)
        throws TestCaseNotExistException;

    OptionOverrides getOptionOverrides();

    StringSeq getTestSuites(string mapping);

    string getHost(string protocol, bool ipv6);
}

exception ProcessFailedException
{
    string reason;
}

interface Process
{
    void waitReady(int timeout)
        throws ProcessFailedException;

    int waitSuccess(int timeout)
        throws ProcessFailedException;

    string terminate();
}

interface ProcessController
{
    Process* start(string testsuite, string exe, StringSeq args)
        throws ProcessFailedException;

    string getHost(string protocol, bool ipv6);
}

interface BrowserProcessController extends ProcessController
{
    void redirect(string url);
}

interface ProcessControllerRegistry
{
    void setProcessController(ProcessController* controller);
}

}

}