Shinycannon
Load generation tool, part of shinyloadtest
Install / Use
/learn @rstudio/ShinycannonREADME
shinycannon
A load generation tool for Shiny applications. Part of https://rstudio.github.io/shinyloadtest
Installation
For installation instructions, please see the shinyloadtest documentation.
Development
shinycannon is written in Kotlin, a JVM language. Consequently, shinycannon is able to run on whatever platforms JVM is.
However, to ease installation on various platforms, we produce package installer files using fpm in addition to a .jar file.
Building
Building packages for all platforms is best accomplished with Docker.
We'll use the Dockerfile included in this repository.
First, build the Docker image with a command like the following:
docker build -t shinycannon-build .
Executable
To build the .jar file:
sudo docker run -it --rm -v $PWD:/root -w /root shinycannon-build make maven
Note: you may or may not need
sudo, depending on how you installed Docker.
A file, target/shinycannon-1.1.0-jar-with-dependencies.jar will be created.
Installers
To build the .jar file and all packages (rpm/deb/sh):
sudo docker run -it --rm -v $PWD:/root -w /root shinycannon-build make clean maven packages
Note: you may or may not need
sudo, depending on how you installed Docker.
All installer files will be stored in the ./out folder
Running
You can run shinycannon with something like:
java -jar \
./out/shinycannon-1.1.0-45731f0.jar \
recording.log \
http://example.com/your/app
If you are running against an app on RStudio Connect, an RStudio Connect API Key is the easiest way to handle authentication. Please visit Load Testing Authenticated Apps for examples on how to safely set a sensitive environment variable such as SHINYCANNON_CONNECT_API_KEY.
Note: that if the recording was done with an RStudio Connect API key, playback MUST be done with an RStudio Connect API key. Similarly, if a recording does NOT use an API key, playback must NOT use an API key.
Releasing
In the past, release installers were built privately on internal RStudio infrastructure. Release artifacts were deployed to S3. Now, release artifacts are built with a GitHub Actions workflow and uploaded as GitHub release assets.
Before releasing, first update pom.xml with the desired
version. Then, to create a release and build corresponding release
artifacts, create and push a tag prefixed with v such as
v1.2.3. On push, the shinycannon .jar and a set of
platform-specific installers will be created and uploaded.
Releases are available under the "Releases" tab of the project GitHub page.
After release artifacts are created, you should update the shinyloadtest documentation to point to the correct URLs.
License
MIT
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
