bitcoin_testnet 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -6
- data/bitcoin_testnet.gemspec +1 -0
- data/lib/bitcoin_testnet/booter.rb +12 -23
- data/lib/bitcoin_testnet/detector.rb +1 -1
- data/lib/bitcoin_testnet/executor.rb +4 -2
- data/lib/bitcoin_testnet/stopper.rb +21 -0
- data/lib/bitcoin_testnet/version.rb +1 -1
- data/lib/bitcoin_testnet.rb +5 -13
- metadata +19 -4
- data/lib/bitcoin_testnet/cleaner.rb +0 -14
- data/lib/bitcoin_testnet/janitor.rb +0 -20
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Now, you have access to `BitcoinTestnet`.
|
|
12
12
|
|
13
13
|
Second, you have to tell BitcoinTestnet where the testnet in a box directory is. I prefer to keep it in the test folder of my project. For example, with RSpec:
|
14
14
|
|
15
|
-
git submodule add https://github.com/freewil/bitcoin-testnet-box testnet
|
15
|
+
git submodule add https://github.com/freewil/bitcoin-testnet-box spec/testnet
|
16
16
|
|
17
17
|
Then, in your `test_helper`/`spec_helper`:
|
18
18
|
|
@@ -20,15 +20,13 @@ Then, in your `test_helper`/`spec_helper`:
|
|
20
20
|
|
21
21
|
Third, tell `BitcoinTestnet` when to do its work:
|
22
22
|
|
23
|
-
- Before
|
24
|
-
-
|
25
|
-
- After the test suite is finished, call `BitcoinTestnet.stop`. This turns off the Testnet and cleans if. If you started the Testnet manually, then it just cleans it.
|
23
|
+
- Before each spec, call `BitcoinTestnet.start`. This will start and clean the Testnet, so it looks like it did the first time you started the Testnet.
|
24
|
+
- After the test suite is finished, call `BitcoinTestnet.stop`. This turns off the Testnet.
|
26
25
|
|
27
26
|
Sample with RSpec:
|
28
27
|
|
29
28
|
RSpec.configure do |config|
|
30
|
-
config.before(:
|
31
|
-
config.before(:each) { BitcoinTestnet.clean }
|
29
|
+
config.before(:each) { BitcoinTestnet.start }
|
32
30
|
config.after(:suite) { BitcoinTestnet.stop }
|
33
31
|
end
|
34
32
|
|
data/bitcoin_testnet.gemspec
CHANGED
@@ -7,32 +7,21 @@ module BitcoinTestnet
|
|
7
7
|
|
8
8
|
def boot
|
9
9
|
if Detector.exists?
|
10
|
-
|
11
|
-
BitcoinTestnet.started_manually = true
|
12
|
-
Cleaner.clean
|
10
|
+
Stopper.stop
|
13
11
|
else
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
Executor.execute "make clean"
|
13
|
+
end
|
14
|
+
|
15
|
+
thread = Thread.new do
|
16
|
+
Executor.execute "make start"
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
wait_time = 0
|
24
|
-
until wait_time == 5
|
25
|
-
if thread.status == false
|
26
|
-
sleep 2
|
27
|
-
return
|
28
|
-
end
|
29
|
-
sleep 0.1
|
30
|
-
wait_time += 0.1
|
31
|
-
end
|
19
|
+
Wait.new.until do
|
20
|
+
thread.status == false && Executor.execute("make getinfo")
|
21
|
+
end
|
32
22
|
|
33
|
-
|
34
|
-
|
35
|
-
end
|
23
|
+
unless Detector.exists?
|
24
|
+
fail "The bitcoin processes didn't seem to start. Please ensure that the bitcoin testnet servers started at `#{BitcoinTestnet.dir}`"
|
36
25
|
end
|
37
26
|
end
|
38
27
|
|
@@ -10,8 +10,10 @@ module BitcoinTestnet
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def execute
|
13
|
-
|
14
|
-
|
13
|
+
Dir.chdir BitcoinTestnet.dir do
|
14
|
+
commands = @commands.map { |c| "#{c} > /dev/null"}
|
15
|
+
system commands.join(' && ')
|
16
|
+
end
|
15
17
|
end
|
16
18
|
|
17
19
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BitcoinTestnet
|
2
|
+
class Stopper
|
3
|
+
|
4
|
+
def self.stop
|
5
|
+
self.new.stop
|
6
|
+
end
|
7
|
+
|
8
|
+
def stop
|
9
|
+
kill_bitcoind if Detector.exists?
|
10
|
+
Wait.new.until { !Detector.exists? }
|
11
|
+
fail "Looks like it didn't stop" if Detector.exists?
|
12
|
+
Executor.execute "make clean"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def kill_bitcoind
|
18
|
+
system %Q(kill -9 `ps -ef | grep "bitcoind -datadir=" | grep -v grep | awk '{print $2}'`)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/bitcoin_testnet.rb
CHANGED
@@ -1,16 +1,13 @@
|
|
1
|
+
require 'wait'
|
1
2
|
require "bitcoin_testnet/version"
|
2
3
|
require 'active_support/core_ext/module'
|
3
4
|
|
4
5
|
require 'bitcoin_testnet/detector'
|
5
|
-
require 'bitcoin_testnet/booter'
|
6
|
-
require 'bitcoin_testnet/cleaner'
|
7
6
|
require 'bitcoin_testnet/executor'
|
8
|
-
require 'bitcoin_testnet/
|
7
|
+
require 'bitcoin_testnet/booter'
|
8
|
+
require 'bitcoin_testnet/stopper'
|
9
9
|
|
10
10
|
module BitcoinTestnet
|
11
|
-
mattr_accessor :started_manually
|
12
|
-
@@started_manually = false
|
13
|
-
|
14
11
|
mattr_accessor :dir
|
15
12
|
@@dir = nil
|
16
13
|
|
@@ -18,18 +15,13 @@ module BitcoinTestnet
|
|
18
15
|
Booter.boot
|
19
16
|
end
|
20
17
|
|
21
|
-
def self.clean
|
22
|
-
Cleaner.clean
|
23
|
-
end
|
24
|
-
|
25
18
|
def self.stop
|
26
|
-
|
19
|
+
Stopper.stop
|
27
20
|
end
|
28
21
|
|
29
22
|
def self.configure_rspec!
|
30
23
|
RSpec.configure do |c|
|
31
|
-
c.before(:
|
32
|
-
c.before(:each) { BitcoinTestnet.clean }
|
24
|
+
c.before(:each) { BitcoinTestnet.start }
|
33
25
|
c.after(:suite) { BitcoinTestnet.stop }
|
34
26
|
end
|
35
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitcoin_testnet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: wait
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.5.1
|
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.5.1
|
30
46
|
description: A gem of helpers for making integration tests with the Bitcoin testnet
|
31
47
|
a little easier.
|
32
48
|
email:
|
@@ -44,10 +60,9 @@ files:
|
|
44
60
|
- bitcoin_testnet.gemspec
|
45
61
|
- lib/bitcoin_testnet.rb
|
46
62
|
- lib/bitcoin_testnet/booter.rb
|
47
|
-
- lib/bitcoin_testnet/cleaner.rb
|
48
63
|
- lib/bitcoin_testnet/detector.rb
|
49
64
|
- lib/bitcoin_testnet/executor.rb
|
50
|
-
- lib/bitcoin_testnet/
|
65
|
+
- lib/bitcoin_testnet/stopper.rb
|
51
66
|
- lib/bitcoin_testnet/version.rb
|
52
67
|
- testnet/1/bitcoin.conf
|
53
68
|
- testnet/1/testnet3/blk0001.dat
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module BitcoinTestnet
|
2
|
-
class Janitor
|
3
|
-
|
4
|
-
def self.sweep(*args)
|
5
|
-
self.new(*args).sweep
|
6
|
-
end
|
7
|
-
|
8
|
-
def sweep
|
9
|
-
if BitcoinTestnet.started_manually
|
10
|
-
puts "\n***** Since Testnet started manually; cleaning only. If you want to stop it, run: `cd #{BitcoinTestnet.dir} && make stop`"
|
11
|
-
Cleaner.clean
|
12
|
-
else
|
13
|
-
puts "\n***** Since the BitcoinTestnet started the Testnet, stop and clean"
|
14
|
-
Executor.execute "make stop > /dev/null"
|
15
|
-
Cleaner.clean
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|