1 // Copyright (c) 2017 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache-2.0 license that can be
3 // found in the LICENSE file.
5 #ifndef TEST_SMOKE_TESTS_WGT_SMOKE_UTILS_H_
6 #define TEST_SMOKE_TESTS_WGT_SMOKE_UTILS_H_
8 #include <common/installer/app_installer.h>
9 #include <common/pkgmgr_interface.h>
10 #include <common/step/configuration/step_fail.h>
11 #include <smoke_tests/common/smoke_utils.h>
17 #include "hybrid/hybrid_installer.h"
18 #include "wgt/wgt_installer.h"
19 #include "wgt/utils/wgt_app_query_interface.h"
21 namespace smoke_test {
23 bool ValidatePackage(const std::string& pkgid,
24 const std::vector<std::string>& appids,
25 const TestParameters& params);
27 bool ValidateExternalPackage(const std::string& pkgid,
28 const std::vector<std::string>& appids,
29 const TestParameters& params);
31 bool ValidateExtendedPackage(const std::string& pkgid,
32 const std::vector<std::string>& appids,
33 const TestParameters& params);
35 extern const bf::path kSmokePackagesDirectory;
37 class WgtBackendInterface: public BackendInterface {
39 using BackendInterface::BackendInterface;
42 AppQueryInterfacePtr CreateQueryInterface() const override;
43 AppInstallerPtr CreateInstaller(
44 common_installer::PkgMgrPtr pkgmgr) const override;
45 AppInstallerPtr CreateFailExpectedInstaller(
46 common_installer::PkgMgrPtr pkgmgr, int fail_at) const override;
47 common_installer::Subprocess CreateSubprocess() const override;
50 class HybridBackendInterface: public BackendInterface {
52 using BackendInterface::BackendInterface;
54 AppQueryInterfacePtr CreateQueryInterface() const override;
55 AppInstallerPtr CreateInstaller(
56 common_installer::PkgMgrPtr pkgmgr) const override;
57 AppInstallerPtr CreateFailExpectedInstaller(
58 common_installer::PkgMgrPtr pkgmgr, int fail_at) const override;
61 #ifdef OVERRIDE_STEPS_BLOCK
62 #undef OVERRIDE_STEPS_BLOCK
64 #define OVERRIDE_STEPS_BLOCK(TYPE, STEPS) \
65 void STEPS() override { \
68 AddStepAtIndex<common_installer::configuration::StepFail>(fail_at_); \
70 AddStep<common_installer::configuration::StepFail>(); \
73 class FailExpectedWgtInstaller : public wgt::WgtInstaller {
75 explicit FailExpectedWgtInstaller(
76 common_installer::PkgMgrPtr pkgmgr, int fail_at)
77 : wgt::WgtInstaller(pkgmgr), fail_at_(fail_at) { }
80 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, InstallSteps)
81 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, UpdateSteps)
82 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, UninstallSteps)
83 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ReinstallSteps)
84 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, DeltaSteps)
85 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, MoveSteps)
86 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, RecoverySteps)
87 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, MountInstallSteps)
88 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, MountUpdateSteps)
89 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ManifestDirectInstallSteps)
90 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ManifestDirectUpdateSteps)
91 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ManifestPartialInstallSteps)
92 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ManifestPartialUpdateSteps)
93 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, PartialUninstallSteps)
94 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ReadonlyUpdateInstallSteps)
95 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, ReadonlyUpdateUninstallSteps)
96 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, DisablePkgSteps)
97 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, EnablePkgSteps)
98 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, MigrateExtImgSteps)
99 OVERRIDE_STEPS_BLOCK(wgt::WgtInstaller, RecoverDBSteps)
104 class FailExpectedHybridInstaller : public hybrid::HybridInstaller {
106 explicit FailExpectedHybridInstaller(
107 common_installer::PkgMgrPtr pkgmgr, int fail_at)
108 : hybrid::HybridInstaller(pkgmgr), fail_at_(fail_at) { }
111 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, InstallSteps)
112 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, UpdateSteps)
113 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, UninstallSteps)
114 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ReinstallSteps)
115 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, DeltaSteps)
116 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, MoveSteps)
117 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, RecoverySteps)
118 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, MountInstallSteps)
119 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, MountUpdateSteps)
120 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ManifestDirectInstallSteps)
121 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ManifestDirectUpdateSteps)
122 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ManifestPartialInstallSteps)
123 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ManifestPartialUpdateSteps)
124 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, PartialUninstallSteps)
125 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ReadonlyUpdateInstallSteps)
126 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, ReadonlyUpdateUninstallSteps)
127 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, DisablePkgSteps)
128 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, EnablePkgSteps)
129 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, MigrateExtImgSteps)
130 OVERRIDE_STEPS_BLOCK(hybrid::HybridInstaller, RecoverDBSteps)
135 #ifdef OVERRIDE_STEPS_BLOCK
136 #undef OVERRIDE_STEPS_BLOCK
138 #define OVERRIDE_STEPS_BLOCK(STEPS) \
139 void STEPS() override { \
140 wgt::WgtInstaller::STEPS(); \
141 if (crash_at_ > -1) \
142 AddStepAtIndex<StepCrash>(crash_at_, type_); \
143 else if (step_name_.size()) \
144 AddStepAfter<StepCrash>(step_name_, type_); \
146 AddStep<StepCrash>(type_); \
149 class CrashWgtInstaller : public wgt::WgtInstaller {
151 explicit CrashWgtInstaller(common_installer::PkgMgrPtr pkgmgr, int crash_at,
152 std::string step_name, CrashStepType type) :
153 wgt::WgtInstaller(pkgmgr), crash_at_(crash_at),
154 step_name_(step_name), type_(type) { }
157 OVERRIDE_STEPS_BLOCK(InstallSteps)
158 OVERRIDE_STEPS_BLOCK(UpdateSteps)
159 OVERRIDE_STEPS_BLOCK(UninstallSteps)
160 OVERRIDE_STEPS_BLOCK(ReinstallSteps)
161 OVERRIDE_STEPS_BLOCK(DeltaSteps)
162 OVERRIDE_STEPS_BLOCK(MoveSteps)
163 OVERRIDE_STEPS_BLOCK(RecoverySteps)
164 OVERRIDE_STEPS_BLOCK(MountInstallSteps)
165 OVERRIDE_STEPS_BLOCK(MountUpdateSteps)
166 OVERRIDE_STEPS_BLOCK(ManifestDirectInstallSteps)
167 OVERRIDE_STEPS_BLOCK(ManifestDirectUpdateSteps)
168 OVERRIDE_STEPS_BLOCK(ManifestPartialInstallSteps)
169 OVERRIDE_STEPS_BLOCK(ManifestPartialUpdateSteps)
170 OVERRIDE_STEPS_BLOCK(PartialUninstallSteps)
171 OVERRIDE_STEPS_BLOCK(ReadonlyUpdateInstallSteps)
172 OVERRIDE_STEPS_BLOCK(ReadonlyUpdateUninstallSteps)
173 OVERRIDE_STEPS_BLOCK(DisablePkgSteps)
174 OVERRIDE_STEPS_BLOCK(EnablePkgSteps)
175 OVERRIDE_STEPS_BLOCK(MigrateExtImgSteps)
176 OVERRIDE_STEPS_BLOCK(RecoverDBSteps)
179 std::string step_name_;
183 #ifdef OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS
184 #undef OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS
186 #define OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(TYPE, STEPS) \
187 void STEPS() override { \
189 RemoveStep("RunParserPlugin"); \
192 class WgtInstallerWithoutPasrserPlugins : public wgt::WgtInstaller {
194 explicit WgtInstallerWithoutPasrserPlugins(
195 common_installer::PkgMgrPtr pkgmgr) : wgt::WgtInstaller(pkgmgr) { }
198 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
199 wgt::WgtInstaller, InstallSteps)
200 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
201 wgt::WgtInstaller, UpdateSteps)
202 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
203 wgt::WgtInstaller, UninstallSteps)
204 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
205 wgt::WgtInstaller, ReinstallSteps)
206 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
207 wgt::WgtInstaller, DeltaSteps)
208 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
209 wgt::WgtInstaller, MoveSteps)
210 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
211 wgt::WgtInstaller, MountInstallSteps)
212 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
213 wgt::WgtInstaller, MountUpdateSteps)
214 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
215 wgt::WgtInstaller, ManifestDirectInstallSteps)
216 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
217 wgt::WgtInstaller, ManifestDirectUpdateSteps)
218 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
219 wgt::WgtInstaller, ManifestPartialInstallSteps)
220 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
221 wgt::WgtInstaller, ManifestPartialUpdateSteps)
222 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
223 wgt::WgtInstaller, PartialUninstallSteps)
224 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
225 wgt::WgtInstaller, ReadonlyUpdateInstallSteps)
226 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
227 wgt::WgtInstaller, ReadonlyUpdateUninstallSteps)
228 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
229 wgt::WgtInstaller, DisablePkgSteps)
230 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
231 wgt::WgtInstaller, EnablePkgSteps)
232 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
233 wgt::WgtInstaller, MigrateExtImgSteps)
234 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
235 wgt::WgtInstaller, RecoverDBSteps)
236 void RecoverySteps() override {
237 wgt::WgtInstaller::RecoverySteps();
238 RemoveStep("RecoverParserPlugin");
242 class HybridInstallerWithoutPasrserPlugins : public hybrid::HybridInstaller {
244 explicit HybridInstallerWithoutPasrserPlugins(
245 common_installer::PkgMgrPtr pkgmgr) : hybrid::HybridInstaller(pkgmgr) { }
248 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
249 hybrid::HybridInstaller, InstallSteps)
250 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
251 hybrid::HybridInstaller, UpdateSteps)
252 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
253 hybrid::HybridInstaller, UninstallSteps)
254 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
255 hybrid::HybridInstaller, ReinstallSteps)
256 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
257 hybrid::HybridInstaller, DeltaSteps)
258 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
259 hybrid::HybridInstaller, MoveSteps)
260 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
261 hybrid::HybridInstaller, MountInstallSteps)
262 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
263 hybrid::HybridInstaller, MountUpdateSteps)
264 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
265 hybrid::HybridInstaller, ManifestDirectInstallSteps)
266 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
267 hybrid::HybridInstaller, ManifestDirectUpdateSteps)
268 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
269 hybrid::HybridInstaller, ManifestPartialInstallSteps)
270 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
271 hybrid::HybridInstaller, ManifestPartialUpdateSteps)
272 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
273 hybrid::HybridInstaller, PartialUninstallSteps)
274 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
275 hybrid::HybridInstaller, ReadonlyUpdateInstallSteps)
276 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
277 hybrid::HybridInstaller, ReadonlyUpdateUninstallSteps)
278 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
279 hybrid::HybridInstaller, DisablePkgSteps)
280 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
281 hybrid::HybridInstaller, EnablePkgSteps)
282 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
283 hybrid::HybridInstaller, MigrateExtImgSteps)
284 OVERRIDE_STEPS_BLOCK_WITHOUT_PARSER_PLUGINS(
285 hybrid::HybridInstaller, RecoverDBSteps)
286 void RecoverySteps() override {
287 hybrid::HybridInstaller::RecoverySteps();
288 RemoveStep("RecoverParserPlugin");
292 } // namespace smoke_test
295 #endif // TEST_SMOKE_TESTS_WGT_SMOKE_UTILS_H_