higgs 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +103 -0
- data/Rakefile +9 -2
- data/bin/higgs_apply_jlog +35 -0
- data/bin/higgs_backup +5 -3
- data/bin/higgs_dump_jlog +25 -9
- data/bin/higgs_ping +46 -0
- data/lib/higgs/block.rb +14 -22
- data/lib/higgs/cache.rb +5 -5
- data/lib/higgs/dbm.rb +8 -24
- data/lib/higgs/index.rb +25 -5
- data/lib/higgs/jlog.rb +4 -8
- data/lib/higgs/lock.rb +33 -11
- data/lib/higgs/services.rb +65 -0
- data/lib/higgs/sman.rb +98 -0
- data/lib/higgs/storage.rb +263 -133
- data/lib/higgs/store.rb +8 -24
- data/lib/higgs/thread.rb +9 -9
- data/lib/higgs/tman.rb +66 -21
- data/lib/higgs/utils/bman.rb +40 -20
- data/lib/higgs/version.rb +4 -4
- data/lib/higgs.rb +4 -4
- data/test/test_block.rb +2 -2
- data/test/test_cache.rb +4 -4
- data/test/test_index.rb +17 -5
- data/test/test_jlog.rb +4 -2
- data/test/test_lock.rb +92 -5
- data/test/test_online_backup.rb +19 -10
- data/test/test_replication.rb +468 -0
- data/test/test_services.rb +125 -0
- data/test/test_storage.rb +338 -16
- data/test/test_storage_conf.rb +1 -9
- data/test/test_storage_init_opts.rb +1 -9
- data/test/test_thread.rb +7 -7
- data/test/test_tman.rb +205 -15
- data/test/test_utils_bman.rb +66 -62
- metadata +10 -2
data/test/test_utils_bman.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/local/bin/ruby
|
2
2
|
|
3
3
|
require 'fileutils'
|
4
|
+
require 'higgs/services'
|
5
|
+
require 'higgs/storage'
|
4
6
|
require 'higgs/thread'
|
5
7
|
require 'higgs/utils/bman'
|
6
8
|
require 'logger'
|
@@ -11,7 +13,7 @@ module Higgs::Test
|
|
11
13
|
include Higgs
|
12
14
|
|
13
15
|
# for ident(1)
|
14
|
-
CVS_ID = '$Id: test_utils_bman.rb
|
16
|
+
CVS_ID = '$Id: test_utils_bman.rb 661 2007-10-30 15:37:54Z toki $'
|
15
17
|
|
16
18
|
STORAGE_ITEMS = (ENV['STORAGE_ITEMS'] || '100').to_i
|
17
19
|
WARM_START_ITEMS = (ENV['WARM_START_ITEMS'] || '1000').to_i
|
@@ -30,26 +32,28 @@ module Higgs::Test
|
|
30
32
|
FileUtils.mkdir_p(@from_dir)
|
31
33
|
FileUtils.rm_rf(@to_dir) # for debug
|
32
34
|
FileUtils.mkdir_p(@to_dir)
|
33
|
-
@
|
35
|
+
@remote_services_uri = 'druby://localhost:17320'
|
34
36
|
@from_st = Storage.new(@from,
|
35
37
|
:jlog_rotate_max => 0,
|
36
|
-
:jlog_rotate_service_uri => @jlog_rotate_service_uri,
|
37
38
|
:logger => proc{|path|
|
38
39
|
logger = Logger.new(path, 1)
|
39
40
|
logger.level = Logger::DEBUG
|
40
41
|
logger
|
41
42
|
})
|
43
|
+
@services = RemoteServices.new(:remote_services_uri => @remote_services_uri,
|
44
|
+
:storage => @from_st)
|
42
45
|
@bman = Utils::BackupManager.new(:from => @from,
|
43
46
|
:to_dir => @to_dir,
|
44
47
|
:to_name => @to_name,
|
45
|
-
:
|
48
|
+
:remote_services_uri => @remote_services_uri,
|
46
49
|
:verbose => $DEBUG ? 2 : 0,
|
47
50
|
:out => $DEBUG ? STDERR : '')
|
48
51
|
end
|
49
52
|
|
50
53
|
def teardown
|
51
54
|
@from_st.shutdown unless @from_st.shutdown?
|
52
|
-
|
55
|
+
@services.shutdown
|
56
|
+
DRb.stop_service
|
53
57
|
FileUtils.rm_rf(@from_dir) unless $DEBUG
|
54
58
|
FileUtils.rm_rf(@to_dir) unless $DEBUG
|
55
59
|
end
|
@@ -61,47 +65,47 @@ module Higgs::Test
|
|
61
65
|
|
62
66
|
def test_backup_data
|
63
67
|
@bman.backup_data
|
64
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
68
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
65
69
|
end
|
66
70
|
|
67
71
|
def test_rotate_jlog_0
|
68
|
-
assert_equal(0, Storage.
|
72
|
+
assert_equal(0, Storage.rotated_entries("#{@from}.jlog").length)
|
69
73
|
end
|
70
74
|
|
71
75
|
def test_rotate_jlog_1
|
72
76
|
@bman.rotate_jlog
|
73
|
-
assert_equal(1, Storage.
|
77
|
+
assert_equal(1, Storage.rotated_entries("#{@from}.jlog").length)
|
74
78
|
end
|
75
79
|
|
76
80
|
def test_rotate_jlog_2
|
77
81
|
@bman.rotate_jlog
|
78
82
|
@bman.rotate_jlog
|
79
|
-
assert_equal(2, Storage.
|
83
|
+
assert_equal(2, Storage.rotated_entries("#{@from}.jlog").length)
|
80
84
|
end
|
81
85
|
|
82
86
|
def test_rotate_jlog_10
|
83
87
|
10.times do
|
84
88
|
@bman.rotate_jlog
|
85
89
|
end
|
86
|
-
assert_equal(10, Storage.
|
90
|
+
assert_equal(10, Storage.rotated_entries("#{@from}.jlog").length)
|
87
91
|
end
|
88
92
|
|
89
93
|
def test_backup_jlog_0
|
90
94
|
@bman.backup_jlog
|
91
|
-
assert_equal(0, Storage.
|
95
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
92
96
|
end
|
93
97
|
|
94
98
|
def test_backup_jlog_1
|
95
99
|
@bman.rotate_jlog
|
96
100
|
@bman.backup_jlog
|
97
|
-
assert_equal(1, Storage.
|
101
|
+
assert_equal(1, Storage.rotated_entries("#{@to}.jlog").length)
|
98
102
|
end
|
99
103
|
|
100
104
|
def test_backup_jlog_2
|
101
105
|
@bman.rotate_jlog
|
102
106
|
@bman.rotate_jlog
|
103
107
|
@bman.backup_jlog
|
104
|
-
assert_equal(2, Storage.
|
108
|
+
assert_equal(2, Storage.rotated_entries("#{@to}.jlog").length)
|
105
109
|
end
|
106
110
|
|
107
111
|
def test_backup_jlog_10
|
@@ -109,7 +113,7 @@ module Higgs::Test
|
|
109
113
|
@bman.rotate_jlog
|
110
114
|
end
|
111
115
|
@bman.backup_jlog
|
112
|
-
assert_equal(10, Storage.
|
116
|
+
assert_equal(10, Storage.rotated_entries("#{@to}.jlog").length)
|
113
117
|
end
|
114
118
|
|
115
119
|
def test_clean_jlog
|
@@ -118,16 +122,16 @@ module Higgs::Test
|
|
118
122
|
@bman.rotate_jlog
|
119
123
|
@bman.backup_jlog
|
120
124
|
|
121
|
-
assert_equal(3, Storage.
|
122
|
-
assert_equal(3, Storage.
|
125
|
+
assert_equal(3, Storage.rotated_entries("#{@from}.jlog").length)
|
126
|
+
assert_equal(3, Storage.rotated_entries("#{@to}.jlog").length)
|
123
127
|
|
124
128
|
@bman.clean_jlog_from
|
125
|
-
assert_equal(0, Storage.
|
126
|
-
assert_equal(3, Storage.
|
129
|
+
assert_equal(0, Storage.rotated_entries("#{@from}.jlog").length)
|
130
|
+
assert_equal(3, Storage.rotated_entries("#{@to}.jlog").length)
|
127
131
|
|
128
132
|
@bman.clean_jlog_to
|
129
|
-
assert_equal(0, Storage.
|
130
|
-
assert_equal(0, Storage.
|
133
|
+
assert_equal(0, Storage.rotated_entries("#{@from}.jlog").length)
|
134
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
131
135
|
end
|
132
136
|
|
133
137
|
def test_clean_jlog_delete_backup
|
@@ -137,16 +141,16 @@ module Higgs::Test
|
|
137
141
|
@bman.backup_jlog
|
138
142
|
@bman.rotate_jlog
|
139
143
|
|
140
|
-
assert_equal(4, Storage.
|
141
|
-
assert_equal(3, Storage.
|
144
|
+
assert_equal(4, Storage.rotated_entries("#{@from}.jlog").length)
|
145
|
+
assert_equal(3, Storage.rotated_entries("#{@to}.jlog").length)
|
142
146
|
|
143
147
|
@bman.clean_jlog_from
|
144
|
-
assert_equal(1, Storage.
|
145
|
-
assert_equal(3, Storage.
|
148
|
+
assert_equal(1, Storage.rotated_entries("#{@from}.jlog").length)
|
149
|
+
assert_equal(3, Storage.rotated_entries("#{@to}.jlog").length)
|
146
150
|
|
147
151
|
@bman.clean_jlog_to
|
148
|
-
assert_equal(1, Storage.
|
149
|
-
assert_equal(0, Storage.
|
152
|
+
assert_equal(1, Storage.rotated_entries("#{@from}.jlog").length)
|
153
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
150
154
|
end
|
151
155
|
|
152
156
|
def test_clean_jlog_no_backup_no_delete
|
@@ -154,16 +158,16 @@ module Higgs::Test
|
|
154
158
|
@bman.rotate_jlog
|
155
159
|
@bman.rotate_jlog
|
156
160
|
|
157
|
-
assert_equal(3, Storage.
|
158
|
-
assert_equal(0, Storage.
|
161
|
+
assert_equal(3, Storage.rotated_entries("#{@from}.jlog").length)
|
162
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
159
163
|
|
160
164
|
@bman.clean_jlog_from
|
161
|
-
assert_equal(3, Storage.
|
162
|
-
assert_equal(0, Storage.
|
165
|
+
assert_equal(3, Storage.rotated_entries("#{@from}.jlog").length)
|
166
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
163
167
|
|
164
168
|
@bman.clean_jlog_to
|
165
|
-
assert_equal(3, Storage.
|
166
|
-
assert_equal(0, Storage.
|
169
|
+
assert_equal(3, Storage.rotated_entries("#{@from}.jlog").length)
|
170
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
167
171
|
end
|
168
172
|
|
169
173
|
def update_storage(options)
|
@@ -184,7 +188,7 @@ module Higgs::Test
|
|
184
188
|
write_list << [ ope, key, { 'string_only' => [ true, false ][rand(2)] } ]
|
185
189
|
when :custom_properties
|
186
190
|
next unless (@from_st.key? key)
|
187
|
-
value = ITEM_CHARS[rand(ITEM_CHARS.
|
191
|
+
value = ITEM_CHARS[rand(ITEM_CHARS.length)] * rand(MAX_ITEM_BYTES)
|
188
192
|
write_list << [ ope, key, { 'foo' => value } ]
|
189
193
|
when :delete
|
190
194
|
next unless (@from_st.key? key)
|
@@ -217,11 +221,11 @@ module Higgs::Test
|
|
217
221
|
@bman.clean_jlog_from
|
218
222
|
@bman.clean_jlog_to
|
219
223
|
|
220
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
224
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
221
225
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
222
|
-
Index.new.load("#{@to}.idx").to_h)
|
223
|
-
assert_equal(0, Storage.
|
224
|
-
assert_equal(0, Storage.
|
226
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
227
|
+
assert_equal(0, Storage.rotated_entries("#{@from}.jlog").length)
|
228
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
225
229
|
end
|
226
230
|
|
227
231
|
def test_online_backup
|
@@ -238,7 +242,7 @@ module Higgs::Test
|
|
238
242
|
|
239
243
|
assert((File.file? "#{@to}.tar"))
|
240
244
|
assert((File.file? "#{@to}.idx"))
|
241
|
-
assert_equal(0, Storage.
|
245
|
+
assert_equal(0, Storage.rotated_entries("#{@to}.jlog").length)
|
242
246
|
end
|
243
247
|
|
244
248
|
def test_online_backup_with_latest_journal_log
|
@@ -258,18 +262,18 @@ module Higgs::Test
|
|
258
262
|
@bman.recover
|
259
263
|
@from_st.shutdown
|
260
264
|
|
261
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
265
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
262
266
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
263
|
-
Index.new.load("#{@to}.idx").to_h)
|
264
|
-
assert(! FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"))
|
267
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
268
|
+
assert(! FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"), 'JOURNAL LOG should NOT be same.')
|
265
269
|
|
266
270
|
st = Storage.new(@to)
|
267
271
|
st.shutdown
|
268
272
|
|
269
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
273
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
270
274
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
271
|
-
Index.new.load("#{@to}.idx").to_h)
|
272
|
-
assert(FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"))
|
275
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
276
|
+
assert(FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"), 'JOURNAL LOG should be same.')
|
273
277
|
end
|
274
278
|
|
275
279
|
def test_online_backup_with_incompleted_journal_log
|
@@ -290,18 +294,18 @@ module Higgs::Test
|
|
290
294
|
@bman.recover
|
291
295
|
@from_st.shutdown
|
292
296
|
|
293
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
297
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
294
298
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
295
|
-
Index.new.load("#{@to}.idx").to_h)
|
296
|
-
assert(! FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"))
|
299
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
300
|
+
assert(! FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"), 'JOURNAL LOG should NOT be same.')
|
297
301
|
|
298
302
|
st = Storage.new(@to)
|
299
303
|
st.shutdown
|
300
304
|
|
301
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
305
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
302
306
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
303
|
-
Index.new.load("#{@to}.idx").to_h)
|
304
|
-
assert(FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"))
|
307
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
308
|
+
assert(FileUtils.cmp("#{@from}.jlog", "#{@to}.jlog"), 'JOURNAL LOG should be same.')
|
305
309
|
end
|
306
310
|
|
307
311
|
def test_restore_files
|
@@ -318,15 +322,15 @@ module Higgs::Test
|
|
318
322
|
|
319
323
|
@from_st.shutdown
|
320
324
|
|
321
|
-
assert(! FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
325
|
+
assert(! FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should NOT be same.')
|
322
326
|
assert(Index.new.load("#{@from}.idx").to_h !=
|
323
|
-
Index.new.load("#{@to}.idx").to_h)
|
327
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should NOT be same.')
|
324
328
|
|
325
329
|
@bman.restore_files
|
326
330
|
|
327
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"))
|
331
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@to}.tar"), 'DATA should be same.')
|
328
332
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
329
|
-
Index.new.load("#{@to}.idx").to_h)
|
333
|
+
Index.new.load("#{@to}.idx").to_h, 'INDEX should be same.')
|
330
334
|
end
|
331
335
|
|
332
336
|
def test_restore_recover_and_verify
|
@@ -349,9 +353,9 @@ module Higgs::Test
|
|
349
353
|
@bman.restore_recover
|
350
354
|
@bman.restore_verify
|
351
355
|
|
352
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"))
|
356
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"), 'DATA should be same.')
|
353
357
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
354
|
-
Index.new.load("#{@from}.idx.orig").to_h)
|
358
|
+
Index.new.load("#{@from}.idx.orig").to_h, 'INDEX should be same.')
|
355
359
|
end
|
356
360
|
|
357
361
|
def test_restore
|
@@ -372,9 +376,9 @@ module Higgs::Test
|
|
372
376
|
|
373
377
|
@bman.restore
|
374
378
|
|
375
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"))
|
379
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"), 'DATA should be same.')
|
376
380
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
377
|
-
Index.new.load("#{@from}.idx.orig").to_h)
|
381
|
+
Index.new.load("#{@from}.idx.orig").to_h, 'INDEX should be same.')
|
378
382
|
end
|
379
383
|
|
380
384
|
def test_incremental_backup_with_recovery_and_restore
|
@@ -407,9 +411,9 @@ module Higgs::Test
|
|
407
411
|
|
408
412
|
@bman.restore
|
409
413
|
|
410
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"))
|
414
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"), 'DATA should be same.')
|
411
415
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
412
|
-
Index.new.load("#{@from}.idx.orig").to_h)
|
416
|
+
Index.new.load("#{@from}.idx.orig").to_h, 'INDEX should be same.')
|
413
417
|
end
|
414
418
|
|
415
419
|
def test_incremental_backup_without_recovery_and_restore
|
@@ -439,9 +443,9 @@ module Higgs::Test
|
|
439
443
|
|
440
444
|
@bman.restore
|
441
445
|
|
442
|
-
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"))
|
446
|
+
assert(FileUtils.cmp("#{@from}.tar", "#{@from}.tar.orig"), 'DATA should be same.')
|
443
447
|
assert(Index.new.load("#{@from}.idx").to_h ==
|
444
|
-
Index.new.load("#{@from}.idx.orig").to_h)
|
448
|
+
Index.new.load("#{@from}.idx.orig").to_h, 'INDEX should be same.')
|
445
449
|
end
|
446
450
|
end
|
447
451
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: higgs
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.1.3
|
7
|
+
date: 2007-11-11 00:00:00 +09:00
|
8
8
|
summary: pure ruby transactional storage compatible with unix TAR format
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -38,6 +38,7 @@ files:
|
|
38
38
|
- lib/higgs/utils/bman.rb
|
39
39
|
- lib/higgs/exceptions.rb
|
40
40
|
- lib/higgs/cache.rb
|
41
|
+
- lib/higgs/sman.rb
|
41
42
|
- lib/higgs/lock.rb
|
42
43
|
- lib/higgs/thread.rb
|
43
44
|
- lib/higgs/block.rb
|
@@ -46,6 +47,7 @@ files:
|
|
46
47
|
- lib/higgs/storage.rb
|
47
48
|
- lib/higgs/tar.rb
|
48
49
|
- lib/higgs/index.rb
|
50
|
+
- lib/higgs/services.rb
|
49
51
|
- lib/higgs/flock.rb
|
50
52
|
- lib/higgs/store.rb
|
51
53
|
- lib/higgs/version.rb
|
@@ -73,12 +75,14 @@ files:
|
|
73
75
|
- test/test_block.rb
|
74
76
|
- test/test_dbm.rb
|
75
77
|
- test/test_storage_conf.rb
|
78
|
+
- test/test_services.rb
|
76
79
|
- test/test_tar.rb
|
77
80
|
- test/run.rb
|
78
81
|
- test/test_storage.rb
|
79
82
|
- test/test_index.rb
|
80
83
|
- test/test_tman_init_opts.rb
|
81
84
|
- test/test_flock.rb
|
85
|
+
- test/test_replication.rb
|
82
86
|
- test/test_store.rb
|
83
87
|
- test/test_jlog.rb
|
84
88
|
- test/test_online_backup.rb
|
@@ -86,9 +90,11 @@ files:
|
|
86
90
|
- sample/count.rb
|
87
91
|
- sample/dbmtest.rb
|
88
92
|
- rdoc.yml
|
93
|
+
- bin/higgs_apply_jlog
|
89
94
|
- bin/higgs_backup
|
90
95
|
- bin/higgs_dump_index
|
91
96
|
- bin/higgs_dump_jlog
|
97
|
+
- bin/higgs_ping
|
92
98
|
- bin/higgs_verify
|
93
99
|
- ChangeLog
|
94
100
|
- LICENSE
|
@@ -104,9 +110,11 @@ rdoc_options:
|
|
104
110
|
extra_rdoc_files: []
|
105
111
|
|
106
112
|
executables:
|
113
|
+
- higgs_apply_jlog
|
107
114
|
- higgs_backup
|
108
115
|
- higgs_dump_index
|
109
116
|
- higgs_dump_jlog
|
117
|
+
- higgs_ping
|
110
118
|
- higgs_verify
|
111
119
|
extensions: []
|
112
120
|
|