Statistics
| Branch: | Revision:

root / tests / qom-test.c @ d91fd756

History | View | Annotate | Download (5.7 kB)

1
/*
2
 * QTest testcase for QOM
3
 *
4
 * Copyright (c) 2013 SUSE LINUX Products GmbH
5
 *
6
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
7
 * See the COPYING file in the top-level directory.
8
 */
9
#include "libqtest.h"
10

    
11
#include <glib.h>
12
#include <string.h>
13
#include "qemu/osdep.h"
14

    
15
static void test_nop(gconstpointer data)
16
{
17
    QTestState *s;
18
    const char *machine = data;
19
    char *args;
20

    
21
    args = g_strdup_printf("-machine %s", machine);
22
    s = qtest_start(args);
23
    if (s) {
24
        qtest_quit(s);
25
    }
26
    g_free(args);
27
}
28

    
29
static const char *x86_machines[] = {
30
    "pc",
31
    "isapc",
32
    "q35",
33
};
34

    
35
static const char *alpha_machines[] = {
36
    "clipper",
37
};
38

    
39
static const char *arm_machines[] = {
40
    "integratorcp",
41
    "versatilepb",
42
    "versatileab",
43
    "lm3s811evb",
44
    "lm3s6965evb",
45
    "collie",
46
    "akita",
47
    "spitz",
48
    "borzoi",
49
    "terrier",
50
    "tosa",
51
    "cheetah",
52
    "sx1-v1",
53
    "sx1",
54
    "realview-eb",
55
    "realview-eb-mpcore",
56
    "realview-pb-a8",
57
    "realview-pbx-a9",
58
    "musicpal",
59
    "mainstone",
60
    "connex",
61
    "verdex",
62
    "z2",
63
    "n800",
64
    "n810",
65
    "kzm",
66
    "vexpress-a9",
67
    "vexpress-a15",
68
    "smdkc210",
69
    "nuri",
70
    "xilinx-zynq-a9",
71
    "highbank",
72
    "midway",
73
    "canon-a1100",
74
};
75

    
76
static const char *cris_machines[] = {
77
    "axis-dev88",
78
};
79

    
80
static const char *lm32_machines[] = {
81
    "lm32-evr",
82
    "lm32-uclinux",
83
    "milkymist",
84
};
85

    
86
static const char *m68k_machines[] = {
87
    "mcf5208evb",
88
    "an5206",
89
    "dummy",
90
};
91

    
92
static const char *microblaze_machines[] = {
93
    "petalogix-ml605",
94
    "petalogix-s3adsp1800",
95
};
96

    
97
static const char *mips_machines[] = {
98
    "malta",
99
    "magnum",
100
    "mips",
101
    "mipssim",
102
    "pica61",
103
};
104

    
105
static const char *moxie_machines[] = {
106
    "moxiesim",
107
};
108

    
109
static const char *openrisc_machines[] = {
110
    "or32-sim",
111
};
112

    
113
static const char *ppc_machines[] = {
114
    "g3beige",
115
    "mac99",
116
    "prep",
117
    "mpc8544ds",
118
    "ppce500",
119
};
120

    
121
static const char *ppc64_machines[] = {
122
    "pseries",
123
};
124

    
125
static const char *ppc405_machines[] = {
126
    "ref405ep",
127
    "taihu",
128
};
129

    
130
static const char *ppc440_machines[] = {
131
    "bamboo",
132
    "virtex-ml507",
133
};
134

    
135
static const char *s390_machines[] = {
136
    "s390-virtio",
137
    "s390-ccw-virtio",
138
};
139

    
140
static const char *superh_machines[] = {
141
    "r2d",
142
    "shix",
143
};
144

    
145
static const char *sparc_machines[] = {
146
    "SS-4",
147
    "SS-5",
148
    "SS-10",
149
    "SS-20",
150
    "SS-600MP",
151
    "LX",
152
    "SPARCClassic",
153
    "SPARCbook",
154
    "leon3_generic",
155
};
156

    
157
static const char *sparc64_machines[] = {
158
    "sun4u",
159
    "sun4v",
160
    "Niagara",
161
};
162

    
163
static const char *unicore32_machines[] = {
164
    "puv3",
165
};
166

    
167
static const char *xtensa_machines[] = {
168
    "sim",
169
    "lx60",
170
    "lx200",
171
};
172

    
173
static void add_test_cases(const char *arch, const char *machine)
174
{
175
    char *path;
176
    path = g_strdup_printf("/%s/qom/%s", arch, machine);
177
    g_test_add_data_func(path, machine, test_nop);
178
}
179

    
180
#define ADD_MACHINE_TESTS(arch, array) do { \
181
    int i; \
182
    for (i = 0; i < ARRAY_SIZE(array); i++) { \
183
        add_test_cases((arch), (array)[i]); \
184
    } \
185
} while (false)
186

    
187
int main(int argc, char **argv)
188
{
189
    const char *arch = qtest_get_arch();
190

    
191
    g_test_init(&argc, &argv, NULL);
192

    
193
    add_test_cases(arch, "none");
194

    
195
    if (strcmp(arch, "i386") == 0 ||
196
        strcmp(arch, "x86_64") == 0) {
197
        ADD_MACHINE_TESTS(arch, x86_machines);
198
    } else if (strcmp(arch, "alpha") == 0) {
199
        ADD_MACHINE_TESTS(arch, alpha_machines);
200
    } else if (strcmp(arch, "arm") == 0) {
201
        ADD_MACHINE_TESTS(arch, arm_machines);
202
    } else if (strcmp(arch, "cris") == 0) {
203
        ADD_MACHINE_TESTS(arch, cris_machines);
204
    } else if (strcmp(arch, "lm32") == 0) {
205
        ADD_MACHINE_TESTS(arch, lm32_machines);
206
    } else if (strcmp(arch, "m68k") == 0) {
207
        ADD_MACHINE_TESTS(arch, m68k_machines);
208
    } else if (strcmp(arch, "microblaze") == 0 ||
209
               strcmp(arch, "microblazeel") == 0) {
210
        ADD_MACHINE_TESTS(arch, microblaze_machines);
211
    } else if (strcmp(arch, "mips") == 0 ||
212
               strcmp(arch, "mipsel") == 0 ||
213
               strcmp(arch, "mips64") == 0) {
214
        ADD_MACHINE_TESTS(arch, mips_machines);
215
    } else if (strcmp(arch, "mips64el") == 0) {
216
        ADD_MACHINE_TESTS(arch, mips_machines);
217
        add_test_cases(arch, "fulong2e");
218
    } else if (strcmp(arch, "moxie") == 0) {
219
        ADD_MACHINE_TESTS(arch, moxie_machines);
220
    } else if (strcmp(arch, "or32") == 0) {
221
        ADD_MACHINE_TESTS(arch, openrisc_machines);
222
    } else if (strcmp(arch, "ppcemb") == 0) {
223
#if 0
224
        /* XXX Available in ppcemb but don't work */
225
        ADD_MACHINE_TESTS(arch, ppc405_machines);
226
#endif
227
        ADD_MACHINE_TESTS(arch, ppc440_machines);
228
    } else if (strcmp(arch, "ppc") == 0) {
229
        ADD_MACHINE_TESTS(arch, ppc405_machines);
230
        ADD_MACHINE_TESTS(arch, ppc440_machines);
231
        ADD_MACHINE_TESTS(arch, ppc_machines);
232
    } else if (strcmp(arch, "ppc64") == 0) {
233
        ADD_MACHINE_TESTS(arch, ppc405_machines);
234
        ADD_MACHINE_TESTS(arch, ppc440_machines);
235
        ADD_MACHINE_TESTS(arch, ppc_machines);
236
        ADD_MACHINE_TESTS(arch, ppc64_machines);
237
    } else if (strcmp(arch, "s390x") == 0) {
238
        ADD_MACHINE_TESTS(arch, s390_machines);
239
    } else if (strcmp(arch, "sh4") == 0 ||
240
               strcmp(arch, "sh4eb") == 0) {
241
        ADD_MACHINE_TESTS(arch, superh_machines);
242
    } else if (strcmp(arch, "sparc") == 0) {
243
        ADD_MACHINE_TESTS(arch, sparc_machines);
244
    } else if (strcmp(arch, "sparc64") == 0) {
245
        ADD_MACHINE_TESTS(arch, sparc64_machines);
246
    } else if (strcmp(arch, "unicore32") == 0) {
247
        ADD_MACHINE_TESTS(arch, unicore32_machines);
248
    } else if (strcmp(arch, "xtensa") == 0 ||
249
               strcmp(arch, "xtensaeb") == 0) {
250
        ADD_MACHINE_TESTS(arch, xtensa_machines);
251
    }
252

    
253
    return g_test_run();
254
}