Skip to content

sergef/docker-library-locust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Locust Docker image

Kubernetes configuration example

apiVersion: v1
kind: ConfigMap
metadata:
  name: locustfile
data:
  locustfile.py: |-
    import uuid

    from datetime import datetime
    from locust import HttpLocust, TaskSet, task

    class MetricsTaskSet(TaskSet):
        _deviceid = None

        def on_start(self):
            self.client.verify = False
            self._deviceid = str(uuid.uuid4())

        @task(1)
        def test_stuff(self):
            self.client.get("/api/stuff")

    class MetricsLocust(HttpLocust):
        task_set = MetricsTaskSet
---
kind: Service
apiVersion: v1
metadata:
  name: locust-master
  labels:
    name: locust
    role: master
spec:
  ports:
    - port: 8089
      targetPort: loc-master-web
      protocol: TCP
      name: loc-master-web
    - port: 5557
      targetPort: loc-master-p1
      protocol: TCP
      name: loc-master-p1
    - port: 5558
      targetPort: loc-master-p2
      protocol: TCP
      name: loc-master-p2
  selector:
    name: locust
    role: master
  type: LoadBalancer
---
kind: ReplicationController
apiVersion: v1
metadata:
  name: locust-master
  labels:
    name: locust
    role: master
spec:
  replicas: 1
  selector:
    name: locust
    role: master
  template:
    metadata:
      labels:
        name: locust
        role: master
    spec:
      containers:
        - name: locust
          image: sergef/docker-library-locust:latest
          volumeMounts:
            - name: locustfile
              mountPath: /tests
          env:
            - name: LOCUST_FILE
              value: /tests/locustfile.py
            - name: LOCUST_MODE
              value: master
            - name: TARGET_HOST
              value: https://some.host
          ports:
            - name: loc-master-web
              containerPort: 8089
              protocol: TCP
            - name: loc-master-p1
              containerPort: 5557
              protocol: TCP
            - name: loc-master-p2
              containerPort: 5558
              protocol: TCP
      volumes:
        - name: locustfile
          configMap:
            name: locustfile
---
kind: ReplicationController
apiVersion: v1
metadata:
  name: locust-worker
  labels:
    name: locust
    role: worker
spec:
  replicas: 10
  selector:
    name: locust
    role: worker
  template:
    metadata:
      labels:
        name: locust
        role: worker
    spec:
      containers:
        - name: locust
          image: sergef/docker-library-locust:latest
          volumeMounts:
            - name: locustfile
              mountPath: /tests
          env:
            - name: LOCUST_FILE
              value: /tests/locustfile.py
            - name: LOCUST_MODE
              value: worker
            - name: LOCUST_MASTER
              value: locust-master
            - name: TARGET_HOST
              value: https://some.host
      volumes:
        - name: locustfile
          configMap:
            name: locustfile

Releases

No releases published

Packages

No packages published

Languages