def test_adjust_settings_mem_request_min_limit(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-settings-mem spec: selector: matchLabels: app: test-adjust-settings-mem template: metadata: labels: app: test-adjust-settings-mem spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] resources: limits: memory: .25Gi """ cfg = """ k8s: application: components: test-adjust-settings-mem: settings: mem: min: .125 max: .5 selector: request_min_limit limit_min: .1875 """ setup_deployment(dep) adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .125}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .125 # assert non-selector resource is cleared all_deps = k_get('deployment') dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-mem'))) assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('limits', {}).get('memory') == '192Mi' adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .25}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .25 all_deps = k_get('deployment') dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-mem'))) assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('limits', {}).get('memory') == '256Mi' cleanup_deployment(dep)
def test_adjust_specific_container(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-specific-container spec: selector: matchLabels: app: test-adjust-specific-container template: metadata: labels: app: test-adjust-specific-container spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] env: - name: ANYTHING value: everything - name: collateral image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] env: - name: ANYTHING value: nothing """ cfg = """ k8s: application: components: test-adjust-specific-container/collateral: env: ANYTHING: values: - everything - nothing """ setup_deployment(dep) adjust_dep( cfg, { 'application': { 'components': { 'test-adjust-specific-container/collateral': { 'settings': { 'ANYTHING': { 'value': 'everything' } } } } } }) desc = query_dep(cfg) assert (desc['application']['components'] ['test-adjust-specific-container/collateral']['settings'] ['ANYTHING']['value'] == 'everything') cleanup_deployment(dep)
def test_adjust_settings_cpu_limits(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-settings-cpu spec: selector: matchLabels: app: test-adjust-settings-cpu template: metadata: labels: app: test-adjust-settings-cpu spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] resources: requests: cpu: .3 """ cfg = """ k8s: application: components: test-adjust-settings-cpu: settings: cpu: min: .125 max: .5 selector: limit """ setup_deployment(dep) adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-cpu': {'settings': {'cpu': {'value': .25}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-cpu']['settings']['cpu']['value'] == .25 # assert non-selector resource is cleared all_deps = k_get('deployment') dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-cpu'))) assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('requests', {}).get('cpu') is None adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-cpu': {'settings': {'cpu': {'value': .125}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-cpu']['settings']['cpu']['value'] == .125 cleanup_deployment(dep)
def test_adjust_env_var_setting(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-env-var-setting spec: selector: matchLabels: app: test-adjust-env-var-setting template: metadata: labels: app: test-adjust-env-var-setting spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] env: - name: ANYTHING value: everything - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName """ cfg = """ k8s: application: components: test-adjust-env-var-setting: env: ANYTHING: values: - everything - nothing """ setup_deployment(dep) adjust_dep( cfg, { 'application': { 'components': { 'test-adjust-env-var-setting': { 'settings': { 'ANYTHING': { 'value': 'nothing' } } } } } }) desc = query_dep(cfg) assert (desc['application']['components']['test-adjust-env-var-setting'] ['settings']['ANYTHING']['value'] == 'nothing') cleanup_deployment(dep)
def test_encoder_adjust_command(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-encoder-adjust-command spec: selector: matchLabels: app: test-encoder-adjust-command template: metadata: labels: app: test-encoder-adjust-command spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600", "&&", "echo", "-XX:GCTimeRatio=69"] """ cfg = """ k8s: application: components: test-encoder-adjust-command: command: encoder: name: jvm before: - /bin/sh - -c - sleep 3600 - "&&" - echo settings: GCTimeRatio: min: 9 max: 99 step: 10 """ setup_deployment(dep) adjust_dep(cfg, {'application': { 'components': {'test-encoder-adjust-command': {'settings': {'GCTimeRatio': {'value': 19}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-encoder-adjust-command']['settings']['GCTimeRatio']['value'] == 19 cleanup_deployment(dep)
def test_encoder_adjust_env_var(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-encoder-adjust-env-var spec: selector: matchLabels: app: test-encoder-adjust-env-var template: metadata: labels: app: test-encoder-adjust-env-var spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] env: - name: JAVA_OPTS value: -XX:GCTimeRatio=69 """ cfg = """ k8s: application: components: test-encoder-adjust-env-var: env: JAVA_OPTS: encoder: name: jvm settings: GCTimeRatio: min: 9 max: 99 step: 10 """ setup_deployment(dep) adjust_dep(cfg, {'application': { 'components': {'test-encoder-adjust-env-var': {'settings': {'GCTimeRatio': {'value': 19}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-encoder-adjust-env-var']['settings']['GCTimeRatio']['value'] == 19 cleanup_deployment(dep)
def test_adjust_settings_mem(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-settings-mem spec: selector: matchLabels: app: test-adjust-settings-mem template: metadata: labels: app: test-adjust-settings-mem spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] resources: limits: memory: .25Gi """ cfg = """ k8s: application: components: test-adjust-settings-mem: settings: mem: min: .1 max: .5 step: .1 """ setup_deployment(dep) adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .125}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .125 cleanup_deployment(dep)
def test_adjust_settings_deployment_config(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-settings-cpu spec: selector: matchLabels: app: test-adjust-settings-cpu template: metadata: labels: app: test-adjust-settings-cpu spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] resources: limits: cpu: .3 """ cfg = """ k8s: application: components: canary: deployment: test-adjust-settings-cpu/main settings: cpu: min: .1 max: .5 step: .1 """ setup_deployment(dep) adjust_dep(cfg, {'application': {'components': {'canary': {'settings': {'cpu': {'value': .2}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['canary']['settings']['cpu']['value'] == .2 cleanup_deployment(dep)
def test_adjust_settings_replicas(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-adjust-settings-replicas spec: replicas: 2 selector: matchLabels: app: test-adjust-settings-replicas template: metadata: labels: app: test-adjust-settings-replicas spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] """ cfg = """ k8s: application: components: test-adjust-settings-replicas: settings: replicas: min: 1 max: 2 step: 1 """ setup_deployment(dep) adjust_dep(cfg, {'application': { 'components': {'test-adjust-settings-replicas': {'settings': {'replicas': {'value': 1}}}}}}) desc = query_dep(cfg) assert desc['application']['components']['test-adjust-settings-replicas']['settings']['replicas']['value'] == 1 cleanup_deployment(dep)
def test_query_settings_cpu(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-query-settings-cpu spec: selector: matchLabels: app: test-query-settings-cpu template: metadata: labels: app: test-query-settings-cpu spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600"] resources: limits: cpu: .3 """ cfg = """ k8s: application: components: test-query-settings-cpu: settings: cpu: min: .1 max: .5 step: .1 """ setup_deployment(dep) desc = query_dep(cfg) assert desc['application']['components']['test-query-settings-cpu']['settings']['cpu']['value'] == .3 cleanup_deployment(dep)
def test_encoder_adjust_with_setting_prefix(): dep = """ apiVersion: apps/v1 kind: Deployment metadata: name: test-encoder-adjust-with-setting-prefix spec: selector: matchLabels: app: test-encoder-adjust-with-setting-prefix template: metadata: labels: app: test-encoder-adjust-with-setting-prefix spec: containers: - name: main image: alpine:latest command: ["/bin/sh", "-c", "sleep 3600", "&&", "echo", "-XX:GCTimeRatio=69"] env: - name: JAVA_OPTS value: -XX:GCTimeRatio=69 """ cfg = """ k8s: application: components: test-encoder-adjust-with-setting-prefix: command: encoder: name: jvm before: - /bin/sh - -c - sleep 3600 - "&&" - echo setting_prefix: cmd- settings: GCTimeRatio: min: 9 max: 99 step: 10 env: JAVA_OPTS: encoder: name: jvm setting_prefix: env- settings: GCTimeRatio: min: 9 max: 99 step: 10 """ setup_deployment(dep) adjust_dep(cfg, {'application': { 'components': {'test-encoder-adjust-with-setting-prefix': { 'settings': {'cmd-GCTimeRatio': {'value': 19}, 'env-GCTimeRatio': {'value': 19}}}}}}) desc = query_dep(cfg) assert (desc['application']['components']['test-encoder-adjust-with-setting-prefix']['settings']['cmd-GCTimeRatio'] ['value'] == 19) assert (desc['application']['components']['test-encoder-adjust-with-setting-prefix']['settings']['env-GCTimeRatio'] ['value'] == 19) cleanup_deployment(dep)