forked from mongodb/mongo-ruby-driver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRakefile
More file actions
134 lines (110 loc) · 3.55 KB
/
Rakefile
File metadata and controls
134 lines (110 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# frozen_string_literal: true
# rubocop:todo all
require 'bundler'
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
# TODO move the mongo require into the individual tasks that actually need it
require 'mongo'
ROOT = File.expand_path(File.join(File.dirname(__FILE__)))
$: << File.join(ROOT, 'spec/shared/lib')
require 'mrss/spec_organizer'
CLASSIFIERS = [
[%r,^mongo/server,, :unit_server],
[%r,^mongo,, :unit],
[%r,^kerberos,, :unit],
[%r,^integration/sdam_error_handling,, :sdam_integration],
[%r,^integration/cursor_reaping,, :cursor_reaping],
[%r,^integration/query_cache,, :query_cache],
[%r,^integration/transactions_examples,, :tx_examples],
[%r,^(atlas|integration),, :integration],
[%r,^spec_tests/sdam_integration,, :spec_sdam_integration],
[%r,^spec_tests,, :spec],
]
RUN_PRIORITY = %i(
tx_examples
unit unit_server
integration sdam_integration cursor_reaping query_cache
spec spec_sdam_integration
)
tasks = Rake.application.instance_variable_get('@tasks')
tasks['release:do'] = tasks.delete('release')
RSpec::Core::RakeTask.new(:spec) do |t|
#t.rspec_opts = "--profile 5" if ENV['CI']
end
task :default => ['spec:prepare', :spec]
namespace :spec do
desc 'Creates necessary user accounts in the cluster'
task :prepare do
$: << File.join(File.dirname(__FILE__), 'spec')
require 'support/utils'
require 'support/spec_setup'
SpecSetup.new.run
end
desc 'Waits for sessions to be available in the deployment'
task :wait_for_sessions do
$: << File.join(File.dirname(__FILE__), 'spec')
require 'support/utils'
require 'support/spec_config'
require 'support/client_registry'
client = ClientRegistry.instance.global_client('authorized')
client.database.command(ping: 1)
deadline = Process.clock_gettime(Process::CLOCK_MONOTONIC) + 300
loop do
begin
client.cluster.validate_session_support!
break
rescue Mongo::Error::SessionsNotSupported
if Process.clock_gettime(Process::CLOCK_MONOTONIC) >= deadline
raise "Sessions did not become supported in 300 seconds"
end
client.cluster.scan!
end
end
end
desc 'Prints configuration used by the test suite'
task :config do
$: << File.join(File.dirname(__FILE__), 'spec')
# Since this task is usually used for troubleshooting of test suite
# configuration, leave driver log level at the default of debug to
# have connection diagnostics printed during handshakes and such.
require 'support/utils'
require 'support/spec_config'
require 'support/client_registry'
SpecConfig.instance.print_summary
end
def spec_organizer
Mrss::SpecOrganizer.new(
root: ROOT,
classifiers: CLASSIFIERS,
priority_order: RUN_PRIORITY,
)
end
task :ci => ['spec:prepare'] do
spec_organizer.run
end
desc 'Show test buckets'
task :buckets do
spec_organizer.ordered_buckets.each do |category, paths|
puts "#{category || 'remaining'}: #{paths&.join(' ') || '<none>'}"
end
end
end
namespace :release do
task :check_private_key do
unless File.exist?('gem-private_key.pem')
raise "No private key present, cannot release"
end
end
end
task :release => ['release:check_private_key', 'release:do']
desc "Generate all documentation"
task :docs => 'docs:yard'
namespace :docs do
desc "Generate yard documention"
task :yard do
out = File.join('yard-docs', Mongo::VERSION)
FileUtils.rm_rf(out)
system "yardoc -o #{out} --title mongo-#{Mongo::VERSION}"
end
end
load 'profile/benchmarking/rake/tasks.rake'