Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/kubeclient/test/test_guestbook_go.rb')
-rw-r--r--vendor/gems/kubeclient/test/test_guestbook_go.rb237
1 files changed, 237 insertions, 0 deletions
diff --git a/vendor/gems/kubeclient/test/test_guestbook_go.rb b/vendor/gems/kubeclient/test/test_guestbook_go.rb
new file mode 100644
index 00000000000..a50e192a0c5
--- /dev/null
+++ b/vendor/gems/kubeclient/test/test_guestbook_go.rb
@@ -0,0 +1,237 @@
+require_relative 'test_helper'
+require 'vcr'
+
+# creation of google's example of guest book
+class CreateGuestbookGo < MiniTest::Test
+ def test_create_guestbook_entities
+ VCR.configure do |c|
+ c.cassette_library_dir = 'test/cassettes'
+ c.hook_into(:webmock)
+ end
+
+ # WebMock.allow_net_connect!
+ VCR.use_cassette('kubernetes_guestbook') do # , record: :new_episodes) do
+ client = Kubeclient::Client.new('http://10.35.0.23:8080/api/', 'v1')
+
+ testing_ns = Kubeclient::Resource.new
+ testing_ns.metadata = {}
+ testing_ns.metadata.name = 'kubeclient-ns'
+
+ # delete in case they existed before so creation can be tested
+ delete_namespace(client, testing_ns.metadata.name)
+ delete_services(
+ client, testing_ns.metadata.name,
+ ['guestbook', 'redis-master', 'redis-slave']
+ )
+ delete_replication_controllers(
+ client, testing_ns.metadata.name,
+ ['guestbook', 'redis-master', 'redis-slave']
+ )
+
+ client.create_namespace(testing_ns)
+ services = create_services(client, testing_ns.metadata.name)
+ replicators = create_replication_controllers(client, testing_ns.metadata.name)
+
+ get_namespaces(client)
+ get_services(client, testing_ns.metadata.name)
+ get_replication_controllers(client, testing_ns.metadata.name)
+
+ delete_services(client, testing_ns.metadata.name, services)
+ delete_replication_controllers(client, testing_ns.metadata.name, replicators)
+
+ client.delete_namespace(testing_ns.metadata.name)
+ end
+ ensure
+ VCR.turn_off!
+ end
+
+ def delete_namespace(client, namespace_name)
+ client.delete_namespace(namespace_name)
+ rescue Kubeclient::ResourceNotFoundError => exception
+ assert_equal(404, exception.error_code)
+ end
+
+ def get_namespaces(client)
+ namespaces = client.get_namespaces
+ assert(true, namespaces.size > 2)
+ end
+
+ def get_services(client, ns)
+ retrieved_services = client.get_services(namespace: ns)
+ assert_equal(3, retrieved_services.size)
+ end
+
+ def get_replication_controllers(client, ns)
+ retrieved_replicators = client.get_replication_controllers(namespace: ns)
+ assert_equal(3, retrieved_replicators.size)
+ end
+
+ def create_services(client, ns)
+ guestbook_service = client.create_service(guestbook_service(ns))
+ redis_service = client.create_service(redis_service(ns))
+ redis_slave_service = client.create_service(redis_slave_service(ns))
+ [guestbook_service, redis_service, redis_slave_service]
+ end
+
+ def create_replication_controllers(client, namespace)
+ rc = client.create_replication_controller(guestbook_rc(namespace))
+ rc2 = client.create_replication_controller(redis_master_rc(namespace))
+ rc3 = client.create_replication_controller(redis_slave_rc(namespace))
+ [rc, rc2, rc3]
+ end
+
+ def delete_services(client, namespace, services)
+ # if the entity is not found, no need to fail the test
+ services.each do |service|
+ begin
+ if service.instance_of?(Kubeclient::Resource)
+ client.delete_service(service.metadata.name, namespace)
+ else
+ # it's just a string - service name
+ client.delete_service(service, namespace)
+ end
+ rescue Kubeclient::ResourceNotFoundError => exception
+ assert_equal(404, exception.error_code)
+ end
+ end
+ end
+
+ def delete_replication_controllers(client, namespace, replication_controllers)
+ # if the entity is not found, no need to fail the test
+ replication_controllers.each do |rc|
+ begin
+ if rc.instance_of?(Kubeclient::Resource)
+ client.delete_replication_controller(rc.metadata.name, namespace)
+ else
+ # it's just a string - rc name
+ client.delete_replication_controller(rc, namespace)
+ end
+ rescue Kubeclient::ResourceNotFoundError => exception
+ assert_equal(404, exception.error_code)
+ end
+ end
+ end
+
+ private
+
+ def construct_base_rc(namespace)
+ rc = Kubeclient::Resource.new
+ rc.metadata = {}
+ rc.metadata.namespace = namespace
+ rc.metadata.labels = {}
+ rc.spec = {}
+ rc.spec.selector = {}
+ rc.spec.template = {}
+ rc.spec.template.metadata = {}
+ rc.spec.template.spec = {}
+ rc.spec.template.metadata.labels = {}
+ rc
+ end
+
+ def redis_master_rc(namespace)
+ rc = construct_base_rc(namespace)
+ rc.metadata.name = 'redis-master'
+ rc.metadata.labels.app = 'redis'
+ rc.metadata.labels.role = 'master'
+ rc.spec.replicas = 1
+ rc.spec.selector.app = 'redis'
+ rc.spec.selector.role = 'master'
+ rc.spec.template.metadata.labels.app = 'redis'
+ rc.spec.template.metadata.labels.role = 'master'
+ rc.spec.template.spec.containers = [{
+ 'name' => 'redis-master',
+ 'image' => 'redis',
+ 'ports' => [{
+ 'name' => 'redis-server',
+ 'containerPort' => 6379
+ }]
+ }]
+ rc
+ end
+
+ def redis_slave_rc(namespace)
+ rc = construct_base_rc(namespace)
+ rc.metadata.name = 'redis-slave'
+ rc.metadata.labels.app = 'redis'
+ rc.metadata.labels.role = 'slave'
+ rc.spec.replicas = 2
+ rc.spec.selector.app = 'redis'
+ rc.spec.selector.role = 'slave'
+ rc.spec.template.metadata.labels.app = 'redis'
+ rc.spec.template.metadata.labels.role = 'slave'
+ rc.spec.template.spec.containers = [{
+ 'name' => 'redis-slave',
+ 'image' => 'kubernetes/redis-slave:v2',
+ 'ports' => [{
+ 'name' => 'redis-server',
+ 'containerPort' => 6379
+ }]
+ }]
+ rc
+ end
+
+ def guestbook_rc(namespace)
+ rc = construct_base_rc(namespace)
+ rc.metadata.name = 'guestbook'
+ rc.metadata.labels.app = 'guestbook'
+ rc.metadata.labels.role = 'slave'
+ rc.spec.replicas = 3
+ rc.spec.selector.app = 'guestbook'
+ rc.spec.template.metadata.labels.app = 'guestbook'
+ rc.spec.template.spec.containers = [
+ {
+ 'name' => 'guestbook',
+ 'image' => 'kubernetes/guestbook:v2',
+ 'ports' => [
+ {
+ 'name' => 'http-server',
+ 'containerPort' => 3000
+ }
+ ]
+ }
+ ]
+ rc
+ end
+
+ def base_service(namespace)
+ our_service = Kubeclient::Resource.new
+ our_service.metadata = {}
+ our_service.metadata.namespace = namespace
+ our_service.metadata.labels = {}
+ our_service.spec = {}
+ our_service.spec.selector = {}
+ our_service
+ end
+
+ def redis_slave_service(namespace)
+ our_service = base_service(namespace)
+ our_service.metadata.name = 'redis-slave'
+ our_service.metadata.labels.app = 'redis'
+ our_service.metadata.labels.role = 'slave'
+ our_service.spec.ports = [{ 'port' => 6379, 'targetPort' => 'redis-server' }]
+ our_service.spec.selector.app = 'redis'
+ our_service.spec.selector.role = 'slave'
+ our_service
+ end
+
+ def redis_service(namespace)
+ our_service = base_service(namespace)
+ our_service.metadata.name = 'redis-master'
+ our_service.metadata.labels.app = 'redis'
+ our_service.metadata.labels.role = 'master'
+ our_service.spec.ports = [{ 'port' => 6379, 'targetPort' => 'redis-server' }]
+ our_service.spec.selector.app = 'redis'
+ our_service.spec.selector.role = 'master'
+ our_service
+ end
+
+ def guestbook_service(namespace)
+ our_service = base_service(namespace)
+ our_service.metadata.name = 'guestbook'
+ our_service.metadata.labels.name = 'guestbook'
+ our_service.spec.ports = [{ 'port' => 3000, 'targetPort' => 'http-server' }]
+ our_service.spec.selector.app = 'guestbook'
+ our_service.type = 'LoadBalancer'
+ our_service
+ end
+end