Model-based Web Site Loading Emulation
| csv | ||
| csvs | ||
| data | ||
| failed | ||
| plots | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| analysis.ipynb | ||
| BrowsEm.config | ||
| BrowsEm.config.sample | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| emulate_iml_directory.sh | ||
| flake.lock | ||
| flake.nix | ||
| install.sh | ||
| README.md | ||
| Taskfile.yaml | ||
BrowsEm
Installing
- Prerequisites: Linux and root shell
- Install nix with
./install.sh
Running
- Enter nix devshell with
nix develop - Run the tool with
task
Tasks
Setup & Data Collection
task clean- Clean generated datatask jupyter-lab- Run Jupyter Lab for analysistask download-top-websites- Download top websitestask top-n-websites- Limit to top N websitestask scrape- Scrape websites and collect datatask load-model- Generate load model from scraped datatask scrape-stats- Generate statistics on scraped data
Emulation
task build-bins- Build necessary binaries for emulationtask emulate- Run website loading emulation based on models
Example:
# Run emulation with custom model and output file
task emulate MODEL_PATH=data/example/model.json OUTPUT_FILE=results.csv NUM_ITERATIONS=5
Configuration variables for emulation:
MODEL_PATH: Path to the IML model file (required)OUTPUT_FILE: Path to save benchmark results (default: benchmark_results.csv)NUM_ITERATIONS: Number of benchmark iterations (default: 10)BASE_PORT: Base port number for servers (default: 8080)
Nix
Use nix for emulation by running:
nix develop
and executing the commands within this shell. This ensures that all dependencies are setup correctly.