-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests(helpers): separate grpc functions (#13552)
It is one of the serial refactors of helpers.lua KAG-5242
- Loading branch information
Showing
2 changed files
with
95 additions
and
74 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
local pl_path = require("pl.path") | ||
local shell = require("resty.shell") | ||
local resty_signal = require("resty.signal") | ||
|
||
|
||
local CONSTANTS = require("spec.details.constants") | ||
|
||
|
||
local function isnewer(path_a, path_b) | ||
if not pl_path.exists(path_a) then | ||
return true | ||
end | ||
if not pl_path.exists(path_b) then | ||
return false | ||
end | ||
return assert(pl_path.getmtime(path_b)) > assert(pl_path.getmtime(path_a)) | ||
end | ||
|
||
|
||
local function make(workdir, specs) | ||
workdir = pl_path.normpath(workdir or pl_path.currentdir()) | ||
|
||
for _, spec in ipairs(specs) do | ||
local targetpath = pl_path.join(workdir, spec.target) | ||
for _, src in ipairs(spec.src) do | ||
local srcpath = pl_path.join(workdir, src) | ||
if isnewer(targetpath, srcpath) then | ||
local ok, _, stderr = shell.run(string.format("cd %s; %s", workdir, spec.cmd), nil, 0) | ||
assert(ok, stderr) | ||
if isnewer(targetpath, srcpath) then | ||
error(string.format("couldn't make %q newer than %q", targetpath, srcpath)) | ||
end | ||
break | ||
end | ||
end | ||
end | ||
|
||
return true | ||
end | ||
|
||
|
||
local grpc_target_proc | ||
|
||
|
||
local function start_grpc_target() | ||
local ngx_pipe = require("ngx.pipe") | ||
assert(make(CONSTANTS.GRPC_TARGET_SRC_PATH, { | ||
{ | ||
target = "targetservice/targetservice.pb.go", | ||
src = { "../targetservice.proto" }, | ||
cmd = "protoc --go_out=. --go-grpc_out=. -I ../ ../targetservice.proto", | ||
}, | ||
{ | ||
target = "targetservice/targetservice_grpc.pb.go", | ||
src = { "../targetservice.proto" }, | ||
cmd = "protoc --go_out=. --go-grpc_out=. -I ../ ../targetservice.proto", | ||
}, | ||
{ | ||
target = "target", | ||
src = { "grpc-target.go", "targetservice/targetservice.pb.go", "targetservice/targetservice_grpc.pb.go" }, | ||
cmd = "go mod tidy && go mod download all && go build", | ||
}, | ||
})) | ||
grpc_target_proc = assert(ngx_pipe.spawn({ CONSTANTS.GRPC_TARGET_SRC_PATH .. "/target" }, { | ||
merge_stderr = true, | ||
})) | ||
|
||
return true | ||
end | ||
|
||
|
||
local function stop_grpc_target() | ||
if grpc_target_proc then | ||
grpc_target_proc:kill(resty_signal.signum("QUIT")) | ||
grpc_target_proc = nil | ||
end | ||
end | ||
|
||
|
||
local function get_grpc_target_port() | ||
return 15010 | ||
end | ||
|
||
|
||
return { | ||
start_grpc_target = start_grpc_target, | ||
stop_grpc_target = stop_grpc_target, | ||
get_grpc_target_port = get_grpc_target_port, | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
e4c0e85
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bazel Build
Docker image available
kong/kong:e4c0e858fecd875cf1172cfe4f7bcb2f9f61ffd1
Artifacts available https://github.com/Kong/kong/actions/runs/10712971308