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
|
# File 'lib/tng/services/testng.rb', line 9
def check_system_status
response = @http_client.ping
if response.is_a?(HTTPX::ErrorResponse)
return {
status: :error,
message: "Unable to connect to TNG service: #{response.error&.message}",
error_type: :connection_error
}
end
case response.status
when 200
begin
data = JSON.parse(response.body)
current_version = data["current_version"]["gem_version"]
server_base_url = data["base_url"]
user_base_url = Tng::Services::UserAppConfig.base_url
if current_version > Tng::VERSION
return {
status: :version_mismatch,
message: "Version mismatch detected",
current_version: current_version,
gem_version: Tng::VERSION,
error_type: :version_mismatch
}
end
if server_base_url && user_base_url && server_base_url != user_base_url
return {
status: :base_url_mismatch,
message: "Base URL mismatch detected",
server_base_url: server_base_url,
user_base_url: user_base_url,
current_version: current_version,
gem_version: Tng::VERSION,
error_type: :base_url_mismatch
}
end
{
status: :ok,
message: data["message"] || "System is operational",
current_version: current_version,
gem_version: Tng::VERSION,
server_base_url: server_base_url
}
rescue JSON::ParserError => e
{
status: :error,
message: "Invalid response from server: #{e.message}",
error_type: :parse_error
}
end
else
{
status: :service_down,
message: "TestNG service is currently unavailable (HTTP #{response.status})",
error_type: :service_unavailable
}
end
end
|