thinp_xml 0.0.19 → 0.0.20
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.
- checksums.yaml +8 -8
- data/lib/thinp_xml/era/parse.rb +90 -0
- data/lib/thinp_xml/version.rb +1 -1
- data/spec/era_parse_spec.rb +152 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODJiYjEzNzNmYzhmYzMwMzY0MDcxNjE2NzYzYWQyODMxMTMxYjUyNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODAwOWQxNWIwZGVhMWUyN2U3M2ZlOThjMDNiYTc2MWQ2ZTZkNWQ2ZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2NhZjdjNzQ3ZGQ5Y2M4YTRhNjlmYjE4YThkNDc1NDNjNTNiNWFkNTFkODZk
|
10
|
+
ZjQ0MDEwMDlhYjNhYTE1NDE4NzZjZjg3OTRiZDgyYmNjZDkyYjA4NjIyMWEz
|
11
|
+
NmYyYjAzNDExYWU2NWM3MWI3ZDQwYzI1ODEwMjQ1NDY1NDMxZjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZmEyNzVkNzYzZjFiMzBiNmMwZjY5NDg2NWQ2NDc3N2I4NzUzOGNhNGM4ZjEz
|
14
|
+
MWNkMzAyZTVmYmRiYjBmNzhhMjg3Nzk0ZTUyN2Q4NTM1NjAyNWM5YTQ5ZmQ4
|
15
|
+
ZDQ1NDAxMjVkYjRlZmFiYmM5N2ViM2UzNjM2ZDkxZTljMDEzNTY=
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'thinp_xml/listener'
|
2
|
+
require 'thinp_xml/era/metadata'
|
3
|
+
|
4
|
+
require 'rexml/document'
|
5
|
+
require 'rexml/streamlistener'
|
6
|
+
|
7
|
+
#----------------------------------------------------------------
|
8
|
+
|
9
|
+
module EraXML
|
10
|
+
module EraParseDetail
|
11
|
+
class Listener
|
12
|
+
include ThinpXML::Base::ListenerUtils
|
13
|
+
include REXML::StreamListener
|
14
|
+
|
15
|
+
attr_reader :metadata
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@in_era_array = false
|
19
|
+
@in_writeset = false
|
20
|
+
@writesets = []
|
21
|
+
end
|
22
|
+
|
23
|
+
def tag_start(tag, args)
|
24
|
+
attr = to_hash(args)
|
25
|
+
|
26
|
+
case tag
|
27
|
+
when 'superblock'
|
28
|
+
@superblock = Superblock.new(*get_fields(attr, SUPERBLOCK_FIELDS))
|
29
|
+
@era_array = Array.new(attr[:nr_blocks].to_i, 0)
|
30
|
+
|
31
|
+
when 'writeset'
|
32
|
+
@in_writeset = true
|
33
|
+
@writeset_era = attr[:era].to_i
|
34
|
+
@current_writeset = Array.new(attr[:nr_bits].to_i, false)
|
35
|
+
|
36
|
+
when 'bit'
|
37
|
+
raise "bit when not in a bitset" unless @in_writeset
|
38
|
+
@current_writeset[attr[:block].to_i] = to_bool(attr[:value])
|
39
|
+
|
40
|
+
when 'era_array'
|
41
|
+
@in_era_array = true
|
42
|
+
|
43
|
+
when 'era'
|
44
|
+
raise "not in era array" unless @in_era_array
|
45
|
+
@era_array[attr[:block].to_i] = attr[:era].to_i
|
46
|
+
|
47
|
+
else
|
48
|
+
raise "unhandled tag '#{tag} #{attr.map {|x| x.inspect}.join(' ')}'"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def tag_end(tag)
|
53
|
+
case tag
|
54
|
+
when 'writeset'
|
55
|
+
@writesets << Writeset.new(@writeset_era,
|
56
|
+
@current_writeset.size,
|
57
|
+
@current_writeset)
|
58
|
+
@in_writeset = false
|
59
|
+
|
60
|
+
when 'era_array'
|
61
|
+
@in_era_array = false
|
62
|
+
|
63
|
+
when 'superblock'
|
64
|
+
@metadata = Metadata.new(@superblock, @writesets, @era_array)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_bool(str)
|
69
|
+
case str
|
70
|
+
when 'true'
|
71
|
+
true
|
72
|
+
|
73
|
+
when 'false'
|
74
|
+
false
|
75
|
+
|
76
|
+
else
|
77
|
+
raise "bad bool value: #{str}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def read_xml(io)
|
84
|
+
l = EraParseDetail::Listener.new
|
85
|
+
REXML::Document.parse_stream(io, l)
|
86
|
+
l.metadata
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
#----------------------------------------------------------------
|
data/lib/thinp_xml/version.rb
CHANGED
@@ -0,0 +1,152 @@
|
|
1
|
+
require 'thinp_xml/era/parse'
|
2
|
+
|
3
|
+
include EraXML
|
4
|
+
|
5
|
+
#----------------------------------------------------------------
|
6
|
+
|
7
|
+
describe "EraXML::read_xml" do
|
8
|
+
it "should handle metadata with zero blocks" do
|
9
|
+
metadata = read_xml(StringIO.new(<<EOF))
|
10
|
+
<superblock uuid="" block_size="128" nr_blocks="0" current_era="0">
|
11
|
+
<era_array>
|
12
|
+
</era_array>
|
13
|
+
</superblock>
|
14
|
+
EOF
|
15
|
+
|
16
|
+
expect(metadata.superblock).to eq(Superblock.new("", 128, 0, 0))
|
17
|
+
expect(metadata.writesets).to eq([])
|
18
|
+
expect(metadata.era_array).to eq([])
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should handle more complicated metadata" do
|
22
|
+
metadata = read_xml(StringIO.new(<<EOF))
|
23
|
+
<superblock uuid="blip blop" block_size="256" nr_blocks="32" current_era="100">
|
24
|
+
<writeset era="98" nr_bits="32">
|
25
|
+
<bit block="0" value="true"/>
|
26
|
+
<bit block="1" value="true"/>
|
27
|
+
<bit block="2" value="false"/>
|
28
|
+
<bit block="3" value="false"/>
|
29
|
+
<bit block="4" value="false"/>
|
30
|
+
<bit block="5" value="true"/>
|
31
|
+
<bit block="6" value="true"/>
|
32
|
+
<bit block="7" value="false"/>
|
33
|
+
<bit block="8" value="true"/>
|
34
|
+
<bit block="9" value="true"/>
|
35
|
+
<bit block="10" value="true"/>
|
36
|
+
<bit block="11" value="true"/>
|
37
|
+
<bit block="12" value="false"/>
|
38
|
+
<bit block="13" value="false"/>
|
39
|
+
<bit block="14" value="false"/>
|
40
|
+
<bit block="15" value="false"/>
|
41
|
+
<bit block="16" value="true"/>
|
42
|
+
<bit block="17" value="true"/>
|
43
|
+
<bit block="18" value="true"/>
|
44
|
+
<bit block="19" value="true"/>
|
45
|
+
<bit block="20" value="false"/>
|
46
|
+
<bit block="21" value="true"/>
|
47
|
+
<bit block="22" value="false"/>
|
48
|
+
<bit block="23" value="false"/>
|
49
|
+
<bit block="24" value="false"/>
|
50
|
+
<bit block="25" value="false"/>
|
51
|
+
<bit block="26" value="true"/>
|
52
|
+
<bit block="27" value="true"/>
|
53
|
+
<bit block="28" value="true"/>
|
54
|
+
<bit block="29" value="true"/>
|
55
|
+
<bit block="30" value="true"/>
|
56
|
+
<bit block="31" value="false"/>
|
57
|
+
</writeset>
|
58
|
+
<writeset era="99" nr_bits="32">
|
59
|
+
<bit block="0" value="false"/>
|
60
|
+
<bit block="1" value="true"/>
|
61
|
+
<bit block="2" value="false"/>
|
62
|
+
<bit block="3" value="false"/>
|
63
|
+
<bit block="4" value="false"/>
|
64
|
+
<bit block="5" value="true"/>
|
65
|
+
<bit block="6" value="true"/>
|
66
|
+
<bit block="7" value="true"/>
|
67
|
+
<bit block="8" value="false"/>
|
68
|
+
<bit block="9" value="false"/>
|
69
|
+
<bit block="10" value="true"/>
|
70
|
+
<bit block="11" value="true"/>
|
71
|
+
<bit block="12" value="true"/>
|
72
|
+
<bit block="13" value="false"/>
|
73
|
+
<bit block="14" value="true"/>
|
74
|
+
<bit block="15" value="true"/>
|
75
|
+
<bit block="16" value="false"/>
|
76
|
+
<bit block="17" value="true"/>
|
77
|
+
<bit block="18" value="false"/>
|
78
|
+
<bit block="19" value="false"/>
|
79
|
+
<bit block="20" value="false"/>
|
80
|
+
<bit block="21" value="false"/>
|
81
|
+
<bit block="22" value="true"/>
|
82
|
+
<bit block="23" value="true"/>
|
83
|
+
<bit block="24" value="false"/>
|
84
|
+
<bit block="25" value="false"/>
|
85
|
+
<bit block="26" value="false"/>
|
86
|
+
<bit block="27" value="false"/>
|
87
|
+
<bit block="28" value="true"/>
|
88
|
+
<bit block="29" value="true"/>
|
89
|
+
<bit block="30" value="false"/>
|
90
|
+
<bit block="31" value="true"/>
|
91
|
+
</writeset>
|
92
|
+
<era_array>
|
93
|
+
<era block="0" era="62"/>
|
94
|
+
<era block="1" era="27"/>
|
95
|
+
<era block="2" era="8"/>
|
96
|
+
<era block="3" era="19"/>
|
97
|
+
<era block="4" era="70"/>
|
98
|
+
<era block="5" era="69"/>
|
99
|
+
<era block="6" era="57"/>
|
100
|
+
<era block="7" era="33"/>
|
101
|
+
<era block="8" era="66"/>
|
102
|
+
<era block="9" era="42"/>
|
103
|
+
<era block="10" era="85"/>
|
104
|
+
<era block="11" era="68"/>
|
105
|
+
<era block="12" era="10"/>
|
106
|
+
<era block="13" era="12"/>
|
107
|
+
<era block="14" era="43"/>
|
108
|
+
<era block="15" era="68"/>
|
109
|
+
<era block="16" era="45"/>
|
110
|
+
<era block="17" era="7"/>
|
111
|
+
<era block="18" era="16"/>
|
112
|
+
<era block="19" era="73"/>
|
113
|
+
<era block="20" era="29"/>
|
114
|
+
<era block="21" era="16"/>
|
115
|
+
<era block="22" era="94"/>
|
116
|
+
<era block="23" era="91"/>
|
117
|
+
<era block="24" era="9"/>
|
118
|
+
<era block="25" era="80"/>
|
119
|
+
<era block="26" era="93"/>
|
120
|
+
<era block="27" era="96"/>
|
121
|
+
<era block="28" era="62"/>
|
122
|
+
<era block="29" era="75"/>
|
123
|
+
<era block="30" era="46"/>
|
124
|
+
<era block="31" era="14"/>
|
125
|
+
</era_array>
|
126
|
+
</superblock>
|
127
|
+
EOF
|
128
|
+
|
129
|
+
expect(metadata.superblock).to eq(Superblock.new("blip blop", 256, 32, 100))
|
130
|
+
expect(metadata.writesets.size).to eq(2)
|
131
|
+
|
132
|
+
expect(metadata.writesets[0].era).to eq(98)
|
133
|
+
expect(metadata.writesets[0].nr_bits).to eq(32)
|
134
|
+
expect(metadata.writesets[0].bits[4]).to eq(false)
|
135
|
+
expect(metadata.writesets[0].bits[6]).to eq(true)
|
136
|
+
expect(metadata.writesets[0].bits[16]).to eq(true)
|
137
|
+
expect(metadata.writesets[0].bits[31]).to eq(false)
|
138
|
+
|
139
|
+
expect(metadata.writesets[1].era).to eq(99)
|
140
|
+
expect(metadata.writesets[1].nr_bits).to eq(32)
|
141
|
+
expect(metadata.writesets[1].bits[4]).to eq(false)
|
142
|
+
expect(metadata.writesets[1].bits[6]).to eq(true)
|
143
|
+
expect(metadata.writesets[1].bits[16]).to eq(false)
|
144
|
+
expect(metadata.writesets[1].bits[31]).to eq(true)
|
145
|
+
|
146
|
+
expect(metadata.era_array[7]).to eq(33)
|
147
|
+
expect(metadata.era_array[12]).to eq(10)
|
148
|
+
expect(metadata.era_array[31]).to eq(14)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
#----------------------------------------------------------------
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thinp_xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Thornber
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ejt_command_line
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- lib/thinp_xml/era/builder.rb
|
150
150
|
- lib/thinp_xml/era/emit.rb
|
151
151
|
- lib/thinp_xml/era/metadata.rb
|
152
|
+
- lib/thinp_xml/era/parse.rb
|
152
153
|
- lib/thinp_xml/era_xml.rb
|
153
154
|
- lib/thinp_xml/listener.rb
|
154
155
|
- lib/thinp_xml/thinp/analysis.rb
|
@@ -164,6 +165,7 @@ files:
|
|
164
165
|
- spec/cache_parse_spec.rb
|
165
166
|
- spec/distribution_spec.rb
|
166
167
|
- spec/era_builder_spec.rb
|
168
|
+
- spec/era_parse_spec.rb
|
167
169
|
- thinp_xml.gemspec
|
168
170
|
homepage: ''
|
169
171
|
licenses:
|
@@ -203,3 +205,4 @@ test_files:
|
|
203
205
|
- spec/cache_parse_spec.rb
|
204
206
|
- spec/distribution_spec.rb
|
205
207
|
- spec/era_builder_spec.rb
|
208
|
+
- spec/era_parse_spec.rb
|