pspec 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ pspec
2
+ =====
3
+
4
+ This gem depends on [parallel_tests](https://github.com/grosser/parallel_tests). Check it's page for installation
5
+ instructions.
6
+
7
+ Gem `pspec` determines *optimal processors count* ( **OPC** ) as
8
+ *processors count - 1*
9
+
10
+ Install
11
+ =====
12
+ Add to your Gemfile inside development group.
13
+ `gem 'pspec'`
14
+
15
+ Usage
16
+ =====
17
+ ```sh
18
+ rake pspec:prepare
19
+ ```
20
+ Migrates your database, prepares your test database, clones your test database **OPC** times.
21
+
22
+ ```sh
23
+ rake pspec:run
24
+ ```
25
+ Runs your specs in parallel using **OPC** processors.
data/lib/pspec.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'parallel'
2
+ require 'pspec/replicator'
3
+ require 'pspec/parallel_db'
4
+ require 'pspec/railtie'
@@ -0,0 +1,21 @@
1
+ module Pspec
2
+ module ParallelDb
3
+ class << self
4
+ def prepare
5
+ puts "Optimal processors count was determined as #{Replicator.optimal_processors_count}"
6
+
7
+ prepare_database
8
+
9
+ Replicator.replicate
10
+ end
11
+
12
+ private
13
+ def prepare_database
14
+ Rake::Task['db:migrate'].invoke
15
+ Rake::Task['db:test:prepare'].invoke
16
+
17
+ puts 'Main test database was prepared'
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module Pspec
2
+ class Railtie < ::Rails::Railtie
3
+ rake_tasks do
4
+ require 'tasks/pspec'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,37 @@
1
+ module Pspec
2
+ module Replicator
3
+ class << self
4
+ def optimal_processors_count
5
+ Parallel.processor_count - 1
6
+ end
7
+
8
+ def replicate
9
+ optimal_processors_count.times do |index|
10
+ number = index + 2
11
+
12
+ drop_database number
13
+ create_database number
14
+
15
+ puts "Database #{database number} was created"
16
+ end
17
+ end
18
+
19
+ private
20
+ def drop_database(number)
21
+ ActiveRecord::Base.connection.execute %(drop database if exists "#{database number}")
22
+ end
23
+
24
+ def create_database(number)
25
+ ActiveRecord::Base.connection.execute %(create database "#{database number}" with template "#{database}" owner "#{owner}")
26
+ end
27
+
28
+ def database(number = nil)
29
+ "#{ActiveRecord::Base.configurations['test']['database']}#{number}"
30
+ end
31
+
32
+ def owner
33
+ ActiveRecord::Base.configurations['test']['username']
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ module Pspec
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,14 @@
1
+ namespace :pspec do
2
+ task prepare: :environment do
3
+ Rails.env = 'test'
4
+
5
+ Pspec::ParallelDb.prepare
6
+ end
7
+
8
+ task run: :environment do
9
+ Rails.env = 'test'
10
+
11
+ Rake::Task['parallel:spec'].invoke Pspec::Replicator.optimal_processors_count
12
+ end
13
+ end
14
+
data/pspec.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ require File.expand_path('../lib/pspec/version', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'pspec'
6
+ s.version = Pspec::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.license = 'MIT'
9
+ s.author = 'Yury Kaliada'
10
+ s.email = 'fut.wrk@gmail.com'
11
+ s.description = 'Improvement of parallel_tests gem for PostgreSQL database. Provides enhanced database cloning.'
12
+ s.homepage = 'http://github.com/FUT/pspec'
13
+ s.summary = 'Provides you to clone your PostgreSQL databases extremely fast.'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.require_path = 'lib'
17
+
18
+ s.add_dependency 'activerecord', '~> 3.1'
19
+ s.add_dependency 'rack'
20
+ s.add_dependency 'parallel_tests'
21
+
22
+ s.add_development_dependency 'pry'
23
+
24
+ s.rubyforge_project = s.name
25
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pspec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Yury Kaliada
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rack
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: parallel_tests
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Improvement of parallel_tests gem for PostgreSQL database. Provides enhanced
79
+ database cloning.
80
+ email: fut.wrk@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - README.md
87
+ - lib/pspec.rb
88
+ - lib/pspec/parallel_db.rb
89
+ - lib/pspec/railtie.rb
90
+ - lib/pspec/replicator.rb
91
+ - lib/pspec/version.rb
92
+ - lib/tasks/pspec.rb
93
+ - pspec.gemspec
94
+ homepage: http://github.com/FUT/pspec
95
+ licenses:
96
+ - MIT
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project: pspec
115
+ rubygems_version: 1.8.24
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: Provides you to clone your PostgreSQL databases extremely fast.
119
+ test_files: []