summaryrefslogtreecommitdiff
path: root/tasks
AgeCommit message (Collapse)AuthorFilesLines
2014-10-14(maint) Make catalog_memory a noop unless running on 2.1.0.Henrik Lindberg1-0/+1
This makes the catalog_memory benchmark print a message about 2.1.0 being required and then exit with -1 unless the ruby version is >= than 2.1.0.
2014-10-13(maint) Add memwalk.rake task that outputs a graph of bound objectsHenrik Lindberg1-0/+194
This adds a command that processes the dumped heap information produced by "catalog_memory" benchmark (or other similar heap-dumps). The result is a .dot file that can be rendered. This tool is useful when tracking a memory leak.
2014-08-05(maint) Move local egrammar makefile tasks to main RakefileJosh Partlow1-2/+16
2014-06-18(PUP-2758) Generate tasks with arguments defined by benchmarkHenrik Lindberg1-4/+11
This makes it possible for a benchmark scenario that wants additional details to run a smaller portion of the benchmark to configure these by defining a class called BenchmarkerTask (currently only used by the evaluations benchmark). The separation from the Benchmarker class is that this class is loaded when rake generates a list of tasks, and it is not wanted to load each full benchmark in turn to generate this list. (Over time, the BenchmarkerTask can be expanded on to perform other task generation duties). It is now possible to run all of the evaluations benchmarks, profile all, run one particular micro benchmark, or just its parse or evaluation part by suffixing the name with _parse or _eval. As an example rake benchmark:evaluations:run[assert_type_eval] runs only the evaluation part of the assert_type micro benchmark in evaluations. (This is especially useful when running profiling. For profiling, the parameter warm_up_runs is always included.
2014-06-17(PUP-2758) Add passing arguments (warm_up and detail) to Benchmarker.runHenrik Lindberg1-2/+7
Arguments are needed to be able to run one detail of a benchmark. The evaluations benchmark makes use of this, all others ignore the arguments.
2014-06-17(PUP-2758) Add micro benchmark(s) taskHenrik Lindberg1-1/+24
This adds a benchmark that runs a series of puppet manifests that are measured individually for parse and evaluation time. Each manifest is measured 100x each for parse and evaluation. The benchmark total time includes running all of them (including overhead of measuring the details). Details are output as average of all runs per detail where parsing and evaluating is output as separate entries. The sample file written is for the total average.
2014-05-01(maint) Print yard error message to STDERR, not STDOUTMatthaus Owens1-1/+1
As this is an error/warning, the output should be put to STDERR instead of STDOUT so it can be easily filtered.
2014-04-17(maint) Use current facter api (previous was phased out in facter 2)Kylo Ginsberg1-2/+2
2014-03-07(maint) Fix parallel:spec rake task when dependencies are not present.Peter Huene1-327/+331
If rspec isn't installed, rake will fail because the parallel.rake file cannot be loaded. The fix is to only define the task if rspec/facter can be loaded.
2014-03-07(maint) Add rake task for parallelizing specs.Peter Huene1-0/+404
Adding a 'parallel:spec' task that will group specs and then run those groups in a parallel set of processes. By default, parallel:spec will bunch the specs into groups of approximately 1000 and concurrently run each group up to the number of processors reported by facter. The task takes two parameters: process_count and group_size. Running with a process_count of 1 (parallel:spec[1]) will behave like the existing 'spec' task, except it will still group the tests and recycle the spec running process between groups. This has the added benefit of limiting the spec running process' working set, at the cost of being a little slower.
2014-02-28(maint) Remove desc for generate tasksAndrew Parker1-1/+0
The benchmark generate tasks are only for internal use by the other tasks that users should use (run and profile). Putting a descritpion on it, though, made it visible in `rake -T` and `rake -D`. This removes it so that users aren't confused.
2014-02-14(maint) Fork for each scenarioAndrew Parker1-2/+10
Because of the way puppet initializes, we can't safely re-initialize in the same process. In order to run all of the scenarios we need to make sure there is a new process for each one. This changes from having the "all" tasks re-run rake for each of these instead of just making them dependencies of the "all" task.
2014-02-07(PUP-753) Write times in millisAndrew Parker1-7/+17
The JMeter format is to use milliseconds to express time. This changes the timestamp and elapsed time to be in millis.
2014-02-07(PUP-753) Add task to run/profile all scenariosAndrew Parker1-0/+11
In order to make it easy to bulk collect the benchmark data there needs to be a single command to run all of the scenarios. This adds `benchmark:all:run` and `benchmark:all:profile` to achieve this.
2014-02-07(PUP-753) Write a JMeter CSV logAndrew Parker1-0/+12
This adds a JMeter format CSV log of the benchmark runs. This log will allow us to track the performance over time via Jenkins and the Performance plugin.
2014-02-05Merge pull request #2329 from ↵Josh Partlow1-0/+69
zaphod42/feature/master/pup-753-generate-benchmarking-manifests (PUP-753) Benchmark puppet compiling w/many modules
2014-02-05(maint) Switch from -fd to -fp for specs to reduce disk space usageKylo Ginsberg1-1/+1
2014-02-05(PUP-753) Remove duplicate calls to setupAndrew Parker1-2/+1
There were two different places calling setup for the benchmarker. This consolidates it down to one. Unfortunately, the setup method depends on the generate method having been run already and so it not analogous to the `setup` task. This meant that setup is actually called in the `generate` task.
2014-02-05(PUP-753) Use correct format constant on 1.8.7Andrew Parker1-1/+6
The constant for the default format string changed between 1.8.7 and 1.9.3. This adds a check for the ruby version so that it can get the correct constant.
2014-02-05(Maint) Remove unused dependenciesAndrew Parker1-3/+0
There were a few require statements that got left behind when the benchmark implementation was moved from the rake tasks to its own file. There was also a vestige of an attempt at using Open3 for executing some commands. This removes those unneeded require statements.
2014-02-04(PUP-753) Generate scenario tasks from filesystemAndrew Parker1-40/+44
Since the scenario execution is just defined by a ruby class that lives in the scenario directory, the scenario tasks can now be generated. This extracts the description of a scenario into a file (`description`) and generates a set of rake tasks for each scenario that is in the benchmarks directory. This also removes the top-level benchmark task because right now all scenarios will be using the same class name (Benchmarker), which would cause name collisions when there are multiple scenarios being run in the process.
2014-02-04(PUP-753) Extract benchmark impl into fileAndrew Parker1-56/+12
The code for setting up and running the benchmark is very specific to this particular scenario and also too large to keep in a rake file. This extracts it out into a file that lives inside the scenario. This should turn into a common interface that all benchmark scenarios can implement and should allow the maintenance of scenarios to remain separated and the creation of new ones to be vastly simplified.
2014-02-04(PUP-753) Profile the many_modules benchmark scenarioAndrew Parker1-3/+24
This adds a new rake task "benchmark:many_modules:profile" that will run a single case of the many_modules benchmark and profile it using ruby-prof. The profile data is written to a file in the PWD that can then be viewed using kcachegrind (or qcachegrind on OSX).
2014-02-04(PUP-753) Benchmark puppet compiling w/many modulesAndrew Parker1-0/+87
This sets up a scenario in which we are benchmarking the puppet compiler with a large number of modules, but very simple manifests. The generated modules have 2 manifests each an public and an internal. The site.pp for the environment simply includes all of the modules' public classes. The public classes in turn include their own internal class. The internal class then places a single "notify" resource in the catalog. This also ends up laying down a general structure for benchmark scenarios. Each scenario has support files under `bencmarks/<name of scenario>` and has a rake namespace under the `benchmark` namespace. Each namespace should have at least tasks for `generate` and `run`.
2014-02-04(Maint) Remove documentation rspec outputAndrew Parker1-1/+1
The -fd flag makes the spec output very verbose, but doesn't really provide any benefit for us. It does, however, cause builds to take a significant amount of extra space.
2014-01-24(maint) Only load yard tasks if yard is availableAndrew Parker1-48/+54
2014-01-23(PUP-1118) Document Puppet::EnvironmentsAndrew Parker1-0/+53
This also creates two new rake tasks for generating the documentation: doc:api and doc:all. The doc:api is to generate the published docs, which omits portions of the code that hasn't been tagged. doc:all just outputs everything.
2013-10-24(Maint) Record information about who created the artifactAndrew Parker1-1/+16
It is useful to have some information about the artifact creation, so that we can track it down later.
2013-10-24(Maint) Remove unused taskAndrew Parker1-38/+4
With changes to the way that the jenkins builds work we no longer need to poll the downstream jobs to find errors. This also cleans up the acceptance_artifacts task to use the rake commands rather than relying on the shell so much.
2013-10-09(maint) Check jenkins queueItem as well for a pending jobJosh Partlow1-3/+10
The ci:check_for_downstream task would fail to find a job if it was queued behind a currently running job as this are not listed in the 'builds' section. The first queued item is listed under queueItem, and this change checks there. I have not found a way to query jobs queued beyond the first.
2013-10-03(maint) Increase the check_for_downstream timeout to 20 minJosh Partlow1-2/+5
And allow this to be overridden by an environment variable.
2013-10-01(maint) Move the Rake ci namespace into its own tasks fileJosh Partlow1-0/+38
Cleans up the base Rakefile by extracting out the ci tasks into tasks/ci.rake.
2012-11-29Remove gem.rake from 3.0.xMatthaus Owens1-62/+0
gem.rake is no longer used in 3.0.x because of the new workflow using the packaging repo. It was still required in 2.7.x because 2.7.x still shipped with sbin files and the gem.rake did some magic with moving sbin to bin. This commit removes the rake task.
2012-11-05Merge branch '2.7.x' into 3.0.xJeff McCune1-0/+62
* 2.7.x: (#7422) Support arrow syntax with metaparams rm packaging artifacts in rpm spec, debian rules Fix build targets for 2.7.x Preserve timestamps when installing files Replace dashes with dots for gem version Conflicts: ext/build_defaults.yaml ext/debian/rules ext/redhat/puppet.spec.erb tasks/rake/gem.rake
2012-10-31Replace dashes with dots for gem versionMoses Mendoza1-2/+3
When switching out to using git-describe for versioning from source, gem versioning breaks because dashes are not allowed. This simple fix replaces the dashes with dots, which are. Note that in a merge-up to 3.0.x, this commit will conflict. Default to 'ours' in a merge-up, this file does not even exist in 3.0.x and shouldn't. Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
2012-09-07Remove old apple package rake taskMoses Mendoza1-176/+0
The apple package task in tasks/rake is superceded by the packaging repo task of the same name and functionality. This commit removes it; it should have been removed with the original set of packaging changes to use the packaging repo. Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
2012-08-31remove old tasks and pull out of rake subdirMoses Mendoza10-235/+0
This commit removes several tasks that as far as I can tell are no longer used, and the remaining tasks out of the rake subdir in tasks. Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
2012-08-31Fixup for different source pathsMoses Mendoza1-63/+0
This commit adjusts the packaging artifacts for the difference in directories between 2.7.x and 3.x, which doesn't have sbin and test. Because of this we also switch to using the packaging gem task and remove the existing one.
2012-08-31Merge remote-tracking branch 'origin/2.7.x' into 3.xDaniel Pittman1-38/+0
Conflicts: Rakefile ext/redhat/puppet.spec.erb lib/puppet/defaults.rb spec/integration/defaults_spec.rb tasks/rake/apple.rake Signed-off-by: Daniel Pittman <daniel@puppetlabs.com>
2012-08-30Move and template all apple pkging artifacts to ext/osxMoses Mendoza2-214/+0
Also add a file_mapping.yaml file for apple packaging.
2012-08-24(#15966) Update gem.rake task for correct facter version dependencyEric Sorenson1-1/+1
2012-08-20Merge branch '2.7.x' into 3.xJeff McCune2-3/+4
* 2.7.x: (#15464) Exclude gem command from bundler Revert "Revert "Merge branch 'ticket/2.7.x/15464_a_gemfile_would_improve_contributor_on-boarding' into 2.7.x"" Conflicts: README_DEVELOPER.md lib/puppet.rb tasks/rake/gem.rake
2012-08-20Revert "Revert "Merge branch ↵Jeff McCune2-3/+4
'ticket/2.7.x/15464_a_gemfile_would_improve_contributor_on-boarding' into 2.7.x"" This reverts commit 76ef99b3ea5baeeaa3482d0b3617a1b799c7028c.
2012-08-17Revert "Merge branch ↵Jeff McCune2-4/+3
'ticket/2.7.x/15464_a_gemfile_would_improve_contributor_on-boarding' into 2.7.x" This reverts commit 8919d749c7f5973ab16c7db2b3a64fd1af8bf6b1, reversing changes made to 97f742d70603f626dc40000aae72c299603282c6.
2012-08-17(#15464) Make Puppet.version settable via Puppet.version=Jeff McCune2-3/+4
Without this patch applied the version string of Puppet is dynamically set from the `git describe` tag in the Rakefile using monkey patching. This is problematic because this causes a constant to be re-defined which issues a warning in Ruby. This patch fixes the problem by implementing the Puppet.version= module method. The Rakefile will now set the Puppet version by using `require 'puppet/version'` and calling `Puppet.version = %x{git describe ...}` Using a module method also has the benefit of making it easier to intercept and mock Puppet version specific behavior. From this point forward, the method Puppet.version should but used to obtain the version string instead of the constant Puppet::PUPPETVERSION.
2012-08-16Add rake task to regenerate parserPatrick Carlisle1-0/+5
2012-08-13(#15853) Update gem dependencies to reflect rc orderingMatthaus Litteken1-3/+3
Facter 2.0.0rc is less than 2.0.0, so >= 2.0.0 will never be satisfied using the current Puppet gem dependencies. This commit updates those dependencies to have rc in the version, which will be correctly handled by modern rubygems and ignored by older rubygems. The rc can be removed once the releases are final and we no longer want users to be depending on rc releases.
2012-06-12Merge pull request #853 from justinstoller/maint/2.7.x/normalize_gem_task_nameMatthaus Litteken1-1/+1
(maint) Make Puppet's gem package task the same name as other Puppetlabs' projects
2012-06-12Make Puppet's gem package task the same name as other Puppetlabs' projectsJustin Stoller1-1/+1
2012-06-06Updated manpages, CHANGELOG, puppet.spec, puppet.rb for 2.7.16rc1.Matthaus Litteken1-1/+1