Sha256: 234e0e85ae412154ea138e14ef0fed7f327bdf0e58cd17cc5d7d7706d16c737d

Contents?: true

Size: 1.84 KB

Versions: 17

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

require 'json'

module Gitlab
  module QA
    module Component
      class Chaos < Base
        DOCKER_IMAGE = 'ghcr.io/shopify/toxiproxy'
        DOCKER_IMAGE_TAG = '2.5.0'

        def initialize
          super
          @network = Runtime::Env.docker_network
        end

        def name
          @name ||= "chaos"
        end

        def start
          prepare
          docker.run(image: image, tag: tag) do |command|
            command << '-d '
            command << "--name #{name}"
            command << "--network #{@network}"
            command << "--publish 8474:8474"
          end

          QA::Support::Shellout.shell <<~CMD
              docker run --network #{@network} --rm curlimages/curl:7.85.0 \
                -i -s \
                -X POST http://#{name}:8474/populate \
                -H 'Content-Type: application/json' \
                -d '#{proxies.to_json}'
          CMD
        end

        def proxies
          [
            {
              name: "postgres",
              listen: "[::]:5432",
              upstream: "postgres.test:5432",
              enabled: true
            },
            {
              name: "praefect",
              listen: "[::]:2305",
              upstream: "praefect.test:2305",
              enabled: true
            },
            {
              name: "gitaly1",
              listen: "[::]:8076",
              upstream: "gitaly1.test:8076",
              enabled: true
            },
            {
              name: "gitaly2",
              listen: "[::]:8077",
              upstream: "gitaly2.test:8077",
              enabled: true
            },
            {
              name: "gitaly3",
              listen: "[::]:8078",
              upstream: "gitaly3.test:8078",
              enabled: true
            }
          ]
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
gitlab-qa-15.3.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-15.2.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-15.1.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-15.0.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.21.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.20.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.19.2 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.19.1 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.19.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.18.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.17.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.16.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.15.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.14.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.13.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.12.0 lib/gitlab/qa/component/chaos.rb
gitlab-qa-14.11.0 lib/gitlab/qa/component/chaos.rb