Skip to content

Commit 7f63346

Browse files
authored
test: use a bit more realistic flow in tests. (#270)
While there, change the default integration log level to trace. Signed-off-by: Piotr Sikora <[email protected]>
1 parent 41cb336 commit 7f63346

File tree

11 files changed

+271
-186
lines changed

11 files changed

+271
-186
lines changed

src/wasm.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,9 @@ bool WasmBase::load(const std::string &code, bool allow_precompiled) {
249249
fail(FailState::UnableToInitializeCode, message);
250250
return false;
251251
}
252-
wasm_vm_->integration()->trace(message);
252+
if (!message.empty()) {
253+
wasm_vm_->integration()->trace(message);
254+
}
253255

254256
// Get ABI version from the module.
255257
if (!BytecodeUtil::getAbiVersion(code, abi_version_)) {

test/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ cc_test(
5656
data = [
5757
"//test/test_data:abi_export.wasm",
5858
"//test/test_data:callback.wasm",
59+
"//test/test_data:clock.wasm",
5960
"//test/test_data:infinite_loop.wasm",
6061
"//test/test_data:trap.wasm",
6162
],

test/exports_test.cc

Lines changed: 38 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -30,89 +30,63 @@
3030
namespace proxy_wasm {
3131
namespace {
3232

33-
INSTANTIATE_TEST_SUITE_P(WasmEngines, TestVM, testing::ValuesIn(getWasmEngines()),
33+
INSTANTIATE_TEST_SUITE_P(WasmEngines, TestVm, testing::ValuesIn(getWasmEngines()),
3434
[](const testing::TestParamInfo<std::string> &info) {
3535
return info.param;
3636
});
3737

38-
class TestContext : public ContextBase {
39-
public:
40-
TestContext(WasmBase *base) : ContextBase(base){};
41-
WasmResult log(uint32_t /*log_level*/, std::string_view msg) override {
42-
log_ += std::string(msg) + "\n";
43-
return WasmResult::Ok;
44-
}
45-
std::string &log_msg() { return log_; }
46-
47-
private:
48-
std::string log_;
49-
};
50-
51-
TEST_P(TestVM, Environment) {
38+
TEST_P(TestVm, Environment) {
5239
std::unordered_map<std::string, std::string> envs = {{"KEY1", "VALUE1"}, {"KEY2", "VALUE2"}};
5340
auto source = readTestWasmFile("env.wasm");
54-
55-
auto wasm_base = WasmBase(std::move(vm_), "vm_id", "", "", envs, {});
56-
ASSERT_TRUE(wasm_base.wasm_vm()->load(source, {}, {}));
57-
58-
TestContext context(&wasm_base);
59-
current_context_ = &context;
60-
61-
wasm_base.registerCallbacks();
62-
63-
ASSERT_TRUE(wasm_base.wasm_vm()->link(""));
41+
ASSERT_FALSE(source.empty());
42+
auto wasm = TestWasm(std::move(vm_), envs);
43+
ASSERT_TRUE(wasm.load(source, false));
44+
ASSERT_TRUE(wasm.initialize());
6445

6546
WasmCallVoid<0> run;
66-
wasm_base.wasm_vm()->getFunction("run", &run);
67-
68-
run(current_context_);
69-
70-
auto msg = context.log_msg();
71-
EXPECT_NE(std::string::npos, msg.find("KEY1: VALUE1\n")) << msg;
72-
EXPECT_NE(std::string::npos, msg.find("KEY2: VALUE2\n")) << msg;
47+
wasm.wasm_vm()->getFunction("run", &run);
48+
ASSERT_TRUE(run != nullptr);
49+
run(wasm.vm_context());
50+
51+
// Check application logs.
52+
auto *context = dynamic_cast<TestContext *>(wasm.vm_context());
53+
EXPECT_TRUE(context->isLogged("KEY1: VALUE1\n"));
54+
EXPECT_TRUE(context->isLogged("KEY2: VALUE2\n"));
7355
}
7456

75-
TEST_P(TestVM, WithoutEnvironment) {
57+
TEST_P(TestVm, WithoutEnvironment) {
7658
auto source = readTestWasmFile("env.wasm");
77-
auto wasm_base = WasmBase(std::move(vm_), "vm_id", "", "", {}, {});
78-
ASSERT_TRUE(wasm_base.wasm_vm()->load(source, {}, {}));
79-
80-
TestContext context(&wasm_base);
81-
current_context_ = &context;
82-
83-
wasm_base.registerCallbacks();
84-
85-
ASSERT_TRUE(wasm_base.wasm_vm()->link(""));
59+
ASSERT_FALSE(source.empty());
60+
auto wasm = TestWasm(std::move(vm_), {});
61+
ASSERT_TRUE(wasm.load(source, false));
62+
ASSERT_TRUE(wasm.initialize());
8663

8764
WasmCallVoid<0> run;
88-
wasm_base.wasm_vm()->getFunction("run", &run);
89-
90-
run(current_context_);
65+
wasm.wasm_vm()->getFunction("run", &run);
66+
ASSERT_TRUE(run != nullptr);
67+
run(wasm.vm_context());
9168

92-
EXPECT_EQ(context.log_msg(), "");
69+
// Check application logs.
70+
auto *context = dynamic_cast<TestContext *>(wasm.vm_context());
71+
EXPECT_TRUE(context->isLogEmpty());
9372
}
9473

95-
TEST_P(TestVM, Clock) {
74+
TEST_P(TestVm, Clock) {
9675
auto source = readTestWasmFile("clock.wasm");
97-
auto wasm_base = WasmBase(std::move(vm_), "vm_id", "", "", {}, {});
98-
ASSERT_TRUE(wasm_base.wasm_vm()->load(source, {}, {}));
99-
100-
TestContext context(&wasm_base);
101-
current_context_ = &context;
102-
103-
wasm_base.registerCallbacks();
104-
105-
ASSERT_TRUE(wasm_base.wasm_vm()->link(""));
76+
ASSERT_FALSE(source.empty());
77+
auto wasm = TestWasm(std::move(vm_));
78+
ASSERT_TRUE(wasm.load(source, false));
79+
ASSERT_TRUE(wasm.initialize());
10680

10781
WasmCallVoid<0> run;
108-
wasm_base.wasm_vm()->getFunction("run", &run);
109-
ASSERT_TRUE(run);
110-
run(current_context_);
111-
112-
// Check logs.
113-
auto msg = context.log_msg();
114-
EXPECT_NE(std::string::npos, msg.find("monotonic: ")) << msg;
115-
EXPECT_NE(std::string::npos, msg.find("realtime: ")) << msg;
82+
wasm.wasm_vm()->getFunction("run", &run);
83+
ASSERT_TRUE(run != nullptr);
84+
run(wasm.vm_context());
85+
86+
// Check application logs.
87+
auto *context = dynamic_cast<TestContext *>(wasm.vm_context());
88+
EXPECT_TRUE(context->isLogged("monotonic: "));
89+
EXPECT_TRUE(context->isLogged("realtime: "));
11690
}
11791

11892
} // namespace

0 commit comments

Comments
 (0)