googleforgames / agones

Dedicated Game Server Hosting and Scaling for Multiplayer Games on Kubernetes
https://agones.dev
Apache License 2.0
6.1k stars 815 forks source link

Shows missing "/usr/local/bin/locust" after building container #2744

Closed satishdsb closed 2 years ago

satishdsb commented 2 years ago

What happened: After building container, when I run this command "docker run --rm --network="host" -e "LOCUST_FILE=gameserver_allocation.py" -e "TARGET_HOST=http://127.0.0.1:8001" -p 8089:8089 locust-files:latest", it is showing "missing /usr/local/bin/locust"

What you expected to happen: I expect locust tests running on game server allocation.

How to reproduce it (as minimally and precisely as possible): These is the output of all commands I run on Windows: `PS D:\Projects\\git\test-load-agones\agones\test\load> docker build -t locust-files . [+] Building 2.4s (12/12) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 32B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/hopsoft/graphite-statsd:latest 2.2s => [auth] hopsoft/graphite-statsd:pull token for registry-1.docker.io 0.0s => [internal] load build context 0.0s => => transferring context: 170B 0.0s => [1/6] FROM docker.io/hopsoft/graphite-statsd@sha256:40d36394594e4d0a6d0497e6609c48b652b0a3e230b735dcd5b140fe76daa 0.0s => CACHED [2/6] RUN pip install locust 0.0s => CACHED [3/6] RUN mkdir /etc/service/locust 0.0s => CACHED [4/6] COPY /locust-files ./ 0.0s => CACHED [5/6] COPY /run.sh /etc/service/locust/run 0.0s => CACHED [6/6] RUN chmod +x /etc/service/locust/run 0.0s => exporting to image 0.1s => => exporting layers 0.0s => => writing image sha256:b788dd11d570472ecdbc8be25c61e11454790e0c4c2ca642412b9f263000e477 0.0s => => naming to docker.io/library/locust-files 0.0s PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 41df2a23f4da docker/getting-started "/docker-entrypoint.…" 7 days ago Exited (0) 6 hours ago compassionate_greider PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker build -t locust-files . [+] Building 1.2s (11/11) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 32B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/hopsoft/graphite-statsd:latest 1.1s => [1/6] FROM docker.io/hopsoft/graphite-statsd@sha256:40d36394594e4d0a6d0497e6609c48b652b0a3e230b735dcd5b140fe76daa 0.0s => [internal] load build context 0.0s => => transferring context: 170B 0.0s => CACHED [2/6] RUN pip install locust 0.0s => CACHED [3/6] RUN mkdir /etc/service/locust 0.0s => CACHED [4/6] COPY /locust-files ./ 0.0s => CACHED [5/6] COPY /run.sh /etc/service/locust/run 0.0s => CACHED [6/6] RUN chmod +x /etc/service/locust/run 0.0s => exporting to image 0.1s => => exporting layers 0.0s => => writing image sha256:b788dd11d570472ecdbc8be25c61e11454790e0c4c2ca642412b9f263000e477 0.0s => => naming to docker.io/library/locust-files 0.0s PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker ps --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker images REPOSITORY TAG IMAGE ID CREATED SIZE locust-files latest b788dd11d570 6 hours ago 1.26GB docker/getting-started latest cb90f98fd791 5 months ago 28.8MB PS D:\Projects\PROJECT\git\test-load-agones\agones\test\load> docker run --rm --network="host" -e "LOCUST_FILE=gameserver_allocation.py" -e "TARGET_HOST=http://127.0.0.1:8001" -p 8089:8089 locust-files:latest WARNING: Published ports are discarded when using host network mode Running /etc/my_init.d/00_regen_ssh_host_keys.sh... Running /etc/my_init.d/01_conf_init.sh... Running /etc/rc.local... Booting runit daemon... *** Runit started as PID 15 /usr/local/bin/locust -f gameserver_allocation.py --host=http://127.0.0.1:8001 ./run: line 17: /usr/local/bin/locust: No such file or directory Sep 21 10:46:10 docker-desktop syslog-ng[20]: syslog-ng starting up; version='3.5.6' 2022/09/21 10:46:10 [I] Starting Grafana 2022/09/21 10:46:10 [I] Version: master, Commit: NA, Build date: 1970-01-01 00:00:00 +0000 UTC 2022/09/21 10:46:10 [I] Configuration Info Config files:

Paths: home: /usr/share/grafana data: /usr/share/grafana/data logs: /var/log/grafana

2022/09/21 10:46:10 [I] Database: sqlite3 2022/09/21 10:46:10 [I] Migrator: Starting DB migration 2022/09/21 10:46:10 [I] Migrator: exec migration id: create migration_log table 2022/09/21 10:46:10 [I] Migrator: exec migration id: create user table 2022/09/21 10:46:10 [I] Migrator: exec migration id: add unique index user.login 2022/09/21 10:46:10 [I] Migrator: exec migration id: add unique index user.email 2022/09/21 10:46:10 [I] Migrator: exec migration id: drop index UQE_user_login - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: drop index UQE_user_email - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: Rename table user to user_v1 - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create user table v2 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index UQE_user_login - v2 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index UQE_user_email - v2 2022/09/21 10:46:10 [I] Migrator: exec migration id: copy data_source v1 to v2 2022/09/21 10:46:10 [I] Migrator: exec migration id: Drop old table user_v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create temp user table v1-7 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index IDX_temp_user_email - v1-7 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index IDX_temp_user_org_id - v1-7 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index IDX_temp_user_code - v1-7 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index IDX_temp_user_status - v1-7 2022/09/21 10:46:10 [I] Migrator: exec migration id: create star table 2022/09/21 10:46:10 [I] Migrator: exec migration id: add unique index star.user_id_dashboard_id 2022/09/21 10:46:10 [I] Migrator: exec migration id: create org table v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index UQE_org_name - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create org_user table v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index IDX_org_user_org_id - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: create index UQE_org_user_org_id_user_id - v1 2022/09/21 10:46:10 [I] Migrator: exec migration id: copy data account to org 2022/09/21 10:46:10 [I] Migrator: skipping migration id: copy data account to org, condition not fulfilled 2022/09/21 10:46:10 [I] Migrator: exec migration id: copy data account_user to org_user 2022/09/21 10:46:10 [I] Migrator: skipping migration id: copy data account_user to org_user, condition not fulfilled 2022/09/21 10:46:10 [I] Migrator: exec migration id: Drop old table account 2022/09/21 10:46:10 [I] Migrator: exec migration id: Drop old table account_user 2022/09/21 10:46:10 [I] Migrator: exec migration id: create dashboard table 2022/09/21 10:46:11 [I] Migrator: exec migration id: add index dashboard.account_id 2022/09/21 10:46:11 [I] Migrator: exec migration id: add unique index dashboard_account_id_slug 2022/09/21 10:46:11 [I] Migrator: exec migration id: create dashboard_tag table 2022/09/21 10:46:11 [I] Migrator: exec migration id: add unique index dashboard_tag.dasboard_id_term 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index UQE_dashboard_tag_dashboard_id_term - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: Rename table dashboard to dashboard_v1 - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create dashboard v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index IDX_dashboard_org_id - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_dashboard_org_id_slug - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: copy dashboard v1 to v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop table dashboard_v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: alter dashboard.data to mediumtext v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create data_source table 2022/09/21 10:46:11 [I] Migrator: exec migration id: add index data_source.account_id 2022/09/21 10:46:11 [I] Migrator: exec migration id: add unique index data_source.account_id_name 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index IDX_data_source_account_id - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index UQE_data_source_account_id_name - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: Rename table data_source to data_source_v1 - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create data_source table v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index IDX_data_source_org_id - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_data_source_org_id_name - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: copy data_source v1 to v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: Drop old table data_source_v1 #2 2022/09/21 10:46:11 [I] Migrator: exec migration id: Add column with_credentials 2022/09/21 10:46:11 [I] Migrator: exec migration id: create api_key table 2022/09/21 10:46:11 [I] Migrator: exec migration id: add index api_key.account_id 2022/09/21 10:46:11 [I] Migrator: exec migration id: add index api_key.key 2022/09/21 10:46:11 [I] Migrator: exec migration id: add index api_key.account_id_name 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index IDX_api_key_account_id - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index UQE_api_key_key - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop index UQE_api_key_account_id_name - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: Rename table api_key to api_key_v1 - v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create api_key table v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index IDX_api_key_org_id - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_api_key_key - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_api_key_org_id_name - v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: copy api_key v1 to v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: Drop old table api_key_v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create dashboard_snapshot table v4 2022/09/21 10:46:11 [I] Migrator: exec migration id: drop table dashboard_snapshot_v4 #1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create dashboard_snapshot table v5 #2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_dashboard_snapshot_key - v5 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_dashboard_snapshot_delete_key - v5 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index IDX_dashboard_snapshot_user_id - v5 2022/09/21 10:46:11 [I] Migrator: exec migration id: alter dashboard_snapshot to mediumtext v2 2022/09/21 10:46:11 [I] Migrator: exec migration id: create quota table v1 2022/09/21 10:46:11 [I] Migrator: exec migration id: create index UQE_quota_org_id_user_id_target - v1 2022/09/21 10:46:11 [I] Created default admin user: admin 2022/09/21 10:46:11 [I] Listen: http://0.0.0.0:3000 /usr/local/bin/locust -f gameserver_allocation.py --host=http://127.0.0.1:8001 ./run: line 17: /usr/local/bin/locust: No such file or directory /usr/local/bin/locust -f gameserver_allocation.py --host=http://127.0.0.1:8001 ./run: line 17: /usr/local/bin/locust: No such file or directory /usr/local/bin/locust -f gameserver_allocation.py --host=http://127.0.0.1:8001 ./run: line 17: /usr/local/bin/locust: No such file or directory`

Anything else we need to know?:

Environment: WINDOWS

satishdsb commented 2 years ago

Can someone let me know what's missing here to run locust tests for load testing Agones?

markmandel commented 2 years ago

We should really remove those locust tests, I don't think we've used them in forrrreeever, so I'm not surprised that they are broken.

https://github.com/googleforgames/agones/tree/main/test/load/allocation/grpc

Is the most recent load test suite we've been using.

@roberthbailey should we move that to the top level load folder, and get rid of the rest? We're not using any of it I don't think / not sure if it really works anymore. WDYT?

thomasklein-toptal commented 2 years ago

Hi @markmandel! Thanks for your response.

(from the README under /test/load)

Locust provides a good framework for testing a system under heavy load. It provides a light-weight mechanism to launch thousands of workers that run a given test.

If Locust is not recommended for performance tests can the allocation test suite/approach replace it?

markmandel commented 2 years ago

If Locust is not recommended for performance tests can the allocation test suite/approach replace it?

Yes, I'm suggesting that https://github.com/googleforgames/agones/tree/main/test/load/allocation/grpc replace the whole set of other tests that are in the /load folder.

roberthbailey commented 2 years ago

I checked with Parya (who originally wrote tho locust tests) and I don't think they cover anything particularly special that we need to keep. We haven't run them in a long time (years at this point) and run the allocation load tests when we want to exercise Agones under load.

So I think it makes sense to re-work the test/load directory a bit to remove the locust tests and update the documentation for how to load test the system.