Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status


grinder (1) Versions 0.1.0

Installs/Configures The Grinder load testing framework

cookbook 'grinder', '~> 0.1.0', :supermarket
cookbook 'grinder', '~> 0.1.0'
knife supermarket install grinder
knife supermarket download grinder
Quality 17%

Build Status
Dependency Status

The Grinder Cookbook


Installs and configures The Grinder load testing framework.

The Grinder Website:


Chef >= 10

Vagrant Requirements

  • vagrant
  • vagrant-omnibus plugin
  • vagrant-berkshelf plugin


  • apt
  • java
  • bluepill
  • python


Tested on:
* ubuntu 12.04


See attributes/default.rb for default values

  • node[:grinder][:version] - The Grinder version to install
  • node[:grinder][:url] - URL to The Grinder installation zip file
  • node[:grinder][:checksum] - Zip file checksum to validate the zip file download
  • node[:grinder][:install_path] - Installation base directory
  • node[:grinder][:working_dir] - Working directory for Console and Agent daemons
  • node[:grinder][:properties_path] - Directory path for initial file
  • node[:grinder][:httpHost] - Listen address for the Console process
  • node[:grinder][:httpPort] - Listen port for the Console process
  • node[:grinder][:jars_dir] - extra jar file storage (This director is added to the java classpath)
  • node[:grinder][:classpath] - Array of paths to be added to the classpath (This attribute is appended to during the chef run)
  • node[:grinder][:jython][:upgrade] - Boolean to enable Jython upgrade
  • node[:grinder][:jython][:url] - URL to the upgraded Jython jar
  • node[:grinder][:jython][:checksum] - Checksum for the upgraded Jython jar
  • node[:grinder][:pypi][:modules] - Array of Pypi modules to install (See plugins.rb recipe)

The file has several tuneables that are used to
control the behavior of The Grinder. There are a number of them listed
inside the default attributes file. Please see attributes/defaults.rb
for a complete list of the tuneables.

Two of the tuneables should be pointed out. These two properties tell
the agent processes where to contact the console service. The defaults
are shown here.

node[:grinder][:properties]["consoleHost"] = ""
node[:grinder][:properties]["consolePort"] = "6372"

The default recipe is written in such a way that simply adding a value
to the node[:grinder][:properties] will make it into the file.

If your configuration looked like this:

node[:grinder][:properties]["processes"] = 1
node[:grinder][:properties]["threads"] = 1
node[:grinder][:properties]["reportToConsole.interval"] = 500
node[:grinder][:properties]["newTunable.from.newVersion"] = "New"

These values would end up in the file like this:

grinder.processes = 1
grinder.threads = 1
grinder.reportToConsole.interval = 500
grinder.newTunable.from.newVersion = New

Please see attributes/defaults.rb for a full list of the default



Installs and configures the grinder software. The grinder software is
downloaded and unzipped into the directory set by the
node[:grinder][:install_path] attribute. You can override the
grinder download location using the node[:grinder][:url] attribute.

The location of the grinder.jar file is discovered and set within this

The following environment profile files are added for convenience:

  • /etc/profile.d/

    • Adds the default ruby bin directory to PATH.
  • /etc/profile.d/

    • Exports the following Shell Variables:
    • CLASSPATH: The java classpath for the grinder program
      • GRINDERPROPERTIES: The location of the default file
    • Defines the following aliases:
    • grconsole: Executes the Grinder console. This will require X11 Forwarding if you are on a remote system. You can run the console in headless mode if you pass the '-headless' command line option. By default the Grinder console listens on ''.
    • gragent: Runs the Grinder agent in the foreground.


Run the console as a headless daemon via the bluepill process
monitoring tool.

The working directory is set to node[:grinder][:working_dir]/console.


Run a single agent process as a daemon via the bluepill process
monitoring tool.

The working directory is set to node[:grinder][:working_dir]/agent.


Upgrades the Jython jar file. The current upgrade target is Jython
version 2.7-b1.

You can override the node[:grinder][:jython][:url] and
node[:grinder][:jython][:checksum] attributes to control
which standalone Jython jar file you would like to update to.

NOTE: The current stable version of The Grinder does not work with
the 2.7-b1 Jython version. The 3.12 version of The Grinder
adds this support.


Installs Pypi modules into a virtual environment at the path

The node[:grinder][:pypi][:modules] array controls which packages
are installed into the virtual environment.

The site-packages file inside the virtual environment is added
to the CLASSPATH variable.

Not all python modules work with Jython. This recipe exists as a
convenient method of getting python packages installed into a
controlled environment. I did test it with the simplejson pure
python module and it worked without issue.


Rubocop and Foodcritic

bundle exec rake


Uses Test-Kitchen and Vagrant to test

bundle exec kitchen test

License and Author

Copyright 2013 Nick Downs

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Dependent cookbooks

build-essential ~> 1.4.2
bluepill ~> 2.3
python ~> 1.4
apt ~> 2.3
java ~> 1.14

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric

0.1.0 failed this metric

Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Contributing File Metric

0.1.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Foodcritic Metric

0.1.0 failed this metric

FC064: Ensure issues_url is set in metadata: grinder/metadata.rb:1
FC065: Ensure source_url is set in metadata: grinder/metadata.rb:1
FC066: Ensure chef_version is set in metadata: grinder/metadata.rb:1
FC069: Ensure standardized license defined in metadata: grinder/metadata.rb:1
FC121: Cookbook depends on cookbook made obsolete by Chef 14: grinder/metadata.rb:1
FC122: Use the build_essential resource instead of the recipe: grinder/recipes/agent.rb:21
FC122: Use the build_essential resource instead of the recipe: grinder/recipes/console.rb:21
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

No Binaries Metric

0.1.0 passed this metric

Testing File Metric

0.1.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Version Tag Metric

0.1.0 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must include a tag that matches this cookbook version number