#Alternative to running python (as described below) on your machine, use the docker files.
docker build -t mrsim:latest .
docker-compose up
The behavior can be changed by argument to the python script in the docker-compose.ymlThe simulator can be queried for statistics and started/stopped (use curl from cmd line or open in browser, curl used below):
curl localhost:2222/ctr_requests
- return an integer of the number of get request to the event poll path
curl localhost:2222/ctr_responses
- return an integer of the number of get responses to the event poll path
curl localhost:2222/ctr_files
- returns an integer or the number files.
curl localhost:2222/ctr_unique_files
- returns an integer or the number of unique files. A unique file is the combination of node+file_sequence_number
curl localhost:2222/tc_info
- returns the tc string (as given on the cmd line)
curl localhost:2222/ctr_events
- returns the total number of events
curl localhost:2222/execution_time
- returns the execution time in mm:ss
curl localhost:2222/exe_time_first_poll
- returns the execution time in mm:ss from the first poll
curl localhost:2222/ctr_unique_PNFs
- return the number of unique PNFS in alla events.
curl localhost:2222/start
- start event delivery (default status).
curl localhost:2222/stop
- stop event delivery.
curl localhost:2222/status
- Return the started or stopped status.
##Common TC info File names for 1MB, 5MB and 50MB files Files in the format: MB_.tar.gz Ex. for 5MB file with sequence number 12: 5MB_12.tar.gz The sequence numbers are stepped so that all files have unique names Missing files (files that are not expected to be found in the ftp server. Format: MissingFile_.tar.gz
Limited event streams When the number of events are exhausted, empty replies are returned '[]'
TC100 - One ME, SFTP, 1 1MB file, 1 event
TC101 - One ME, SFTP, 1 5MB file, 1 event
TC102 - One ME, SFTP, 1 50MB file, 1 event
TC110 - One ME, SFTP, 1MB files, 1 file per event, 100 events, 1 event per poll.
TC111 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll.
TC112 - One ME, SFTP, 5MB files, 100 files per event, 100 events, 1 event per poll.
TC113 - One ME, SFTP, 1MB files, 100 files per event, 100 events. All events in one poll.
TC120 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% of replies each: no response, empty message, slow response, 404-error, malformed json
TC121 - One ME, SFTP, 1MB files, 100 files per event, 100 events, 1 event per poll. 10% missing files
TC122 - One ME, SFTP, 1MB files, 100 files per event, 100 events. 1 event per poll. All files with identical name.
TC510 - 700 MEs, SFTP, 1MB files, 1 file per event, 3500 events, 700 event per poll.
TC200-TC202 same as TC100-TC102 but with FTPS
TC210-TC213 same as TC110-TC113 but with FTPS
TC2000-TC2001 same as TC1000-TC1001 but with FTPS
TC610 same as TC510 but with FTPS
Endless event streams
TC1000 - One ME, SFTP, 1MB files, 100 files per event, endless number of events, 1 event per poll
TC1001 - One ME, SFTP, 5MB files, 100 files per event, endless number of events, 1 event per poll
sudo apt install python3-venv
source .env/bin/activate/
pip3 install "anypackage"
#also include in source code
pip3 freeze | grep -v "pkg-resources" > requirements.txt
#to create a req file
FLASK_APP=mr-sim.py flask run
or
python3 mr-sim.py
Check/lint/format the code before commit/amed by autopep8 --in-place --aggressive --aggressive mr-sim.py
When cloning/fetching from the repository first time:
git clone
cd "..."
#navigate to this folder
source setup.sh
#setting up virtualenv and install requirements
you'll get a sourced virtualenv shell here, check prompt
(env) $ python3 mr-sim.py --help
alternatively
(env) $ python3 mr-sim.py --tc1
Every time you run the script, you'll need to step into the virtualenv by following step 3 first.
When cloning/fetching from the repository first time:
Every time you run the script, you'll need to step into the virtualenv by step 2+6.