157 lines
5.6 KiB
Ruby
157 lines
5.6 KiB
Ruby
require_relative 'test_helper'
|
|
|
|
# Pod log tests
|
|
class TestPodLog < MiniTest::Test
|
|
def test_get_pod_log
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
|
|
.to_return(body: open_test_file('pod_log.txt'),
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
retrieved_log = client.get_pod_log('redis-master-pod', 'default')
|
|
|
|
assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
|
|
|
|
assert_requested(:get,
|
|
'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log',
|
|
times: 1)
|
|
end
|
|
|
|
def test_get_pod_log_container
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
|
|
.to_return(body: open_test_file('pod_log.txt'),
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
retrieved_log = client.get_pod_log('redis-master-pod', 'default', container: 'ruby')
|
|
|
|
assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
|
|
|
|
assert_requested(:get,
|
|
'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?container=ruby',
|
|
times: 1)
|
|
end
|
|
|
|
def test_get_pod_log_since_time
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
|
|
.to_return(body: open_test_file('pod_log.txt'),
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
retrieved_log = client.get_pod_log('redis-master-pod',
|
|
'default',
|
|
timestamps: true,
|
|
since_time: '2018-04-27T18:30:17.480321984Z')
|
|
|
|
assert_equal(open_test_file('pod_log.txt').read, retrieved_log)
|
|
|
|
assert_requested(:get,
|
|
'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?sinceTime=2018-04-27T18:30:17.480321984Z×tamps=true',
|
|
times: 1)
|
|
end
|
|
|
|
def test_get_pod_log_tail_lines
|
|
selected_lines = open_test_file('pod_log.txt').to_a[-2..1].join
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
|
|
.to_return(body: selected_lines,
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
retrieved_log = client.get_pod_log('redis-master-pod',
|
|
'default',
|
|
tail_lines: 2)
|
|
|
|
assert_equal(selected_lines, retrieved_log)
|
|
|
|
assert_requested(:get,
|
|
'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?tailLines=2',
|
|
times: 1)
|
|
end
|
|
|
|
def test_get_pod_limit_bytes
|
|
selected_bytes = open_test_file('pod_log.txt').read(10)
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log})
|
|
.to_return(body: selected_bytes,
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
retrieved_log = client.get_pod_log('redis-master-pod',
|
|
'default',
|
|
limit_bytes: 10)
|
|
|
|
assert_equal(selected_bytes, retrieved_log)
|
|
|
|
assert_requested(:get,
|
|
'http://localhost:8080/api/v1/namespaces/default/pods/redis-master-pod/log?limitBytes=10',
|
|
times: 1)
|
|
end
|
|
|
|
def test_watch_pod_log
|
|
file = open_test_file('pod_log.txt')
|
|
expected_lines = file.read.split("\n")
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
|
|
.to_return(body: file, status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
|
|
stream = client.watch_pod_log('redis-master-pod', 'default')
|
|
stream.to_enum.with_index do |notice, index|
|
|
assert_instance_of(String, notice)
|
|
assert_equal(expected_lines[index], notice)
|
|
end
|
|
end
|
|
|
|
def test_watch_pod_log_with_block
|
|
file = open_test_file('pod_log.txt')
|
|
first = file.readlines.first.chomp
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
|
|
.to_return(body: file, status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
|
|
client.watch_pod_log('redis-master-pod', 'default') do |line|
|
|
assert_equal first, line
|
|
break
|
|
end
|
|
end
|
|
|
|
def test_watch_pod_log_follow_redirect
|
|
expected_lines = open_test_file('pod_log.txt').read.split("\n")
|
|
redirect = 'http://localhost:1234/api/namespaces/default/pods/redis-master-pod/log'
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
|
|
.to_return(status: 302, headers: { location: redirect })
|
|
|
|
stub_request(:get, redirect)
|
|
.to_return(body: open_test_file('pod_log.txt'),
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1')
|
|
stream = client.watch_pod_log('redis-master-pod', 'default')
|
|
stream.to_enum.with_index do |notice, index|
|
|
assert_instance_of(String, notice)
|
|
assert_equal(expected_lines[index], notice)
|
|
end
|
|
end
|
|
|
|
def test_watch_pod_log_max_redirect
|
|
redirect = 'http://localhost:1234/api/namespaces/default/pods/redis-master-pod/log'
|
|
|
|
stub_request(:get, %r{/namespaces/default/pods/[a-z0-9-]+/log\?.*follow})
|
|
.to_return(status: 302, headers: { location: redirect })
|
|
|
|
stub_request(:get, redirect)
|
|
.to_return(body: open_test_file('pod_log.txt'),
|
|
status: 200)
|
|
|
|
client = Kubeclient::Client.new('http://localhost:8080/api/', 'v1', http_max_redirects: 0)
|
|
assert_raises(Kubeclient::HttpError) do
|
|
client.watch_pod_log('redis-master-pod', 'default').each do
|
|
end
|
|
end
|
|
end
|
|
end
|