rcs-common 9.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +49 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +1 -0
- data/Rakefile +27 -0
- data/lib/rcs-common.rb +21 -0
- data/lib/rcs-common/binary.rb +64 -0
- data/lib/rcs-common/cgi.rb +7 -0
- data/lib/rcs-common/component.rb +87 -0
- data/lib/rcs-common/crypt.rb +71 -0
- data/lib/rcs-common/deploy.rb +96 -0
- data/lib/rcs-common/diagnosticable.rb +136 -0
- data/lib/rcs-common/evidence.rb +261 -0
- data/lib/rcs-common/evidence/addressbook.rb +173 -0
- data/lib/rcs-common/evidence/application.rb +59 -0
- data/lib/rcs-common/evidence/calendar.rb +62 -0
- data/lib/rcs-common/evidence/call.rb +185 -0
- data/lib/rcs-common/evidence/camera.rb +25 -0
- data/lib/rcs-common/evidence/chat.rb +272 -0
- data/lib/rcs-common/evidence/clibpoard.rb +58 -0
- data/lib/rcs-common/evidence/command.rb +50 -0
- data/lib/rcs-common/evidence/common.rb +78 -0
- data/lib/rcs-common/evidence/content/camera/001.jpg +0 -0
- data/lib/rcs-common/evidence/content/coin/wallet_bit.dat +0 -0
- data/lib/rcs-common/evidence/content/coin/wallet_lite.dat +0 -0
- data/lib/rcs-common/evidence/content/file/Einstein.docx +0 -0
- data/lib/rcs-common/evidence/content/file/arabic.docx +0 -0
- data/lib/rcs-common/evidence/content/mouse/001.jpg +0 -0
- data/lib/rcs-common/evidence/content/mouse/002.jpg +0 -0
- data/lib/rcs-common/evidence/content/mouse/003.jpg +0 -0
- data/lib/rcs-common/evidence/content/mouse/004.jpg +0 -0
- data/lib/rcs-common/evidence/content/print/001.jpg +0 -0
- data/lib/rcs-common/evidence/content/screenshot/001.jpg +0 -0
- data/lib/rcs-common/evidence/content/screenshot/002.jpg +0 -0
- data/lib/rcs-common/evidence/content/screenshot/003.jpg +0 -0
- data/lib/rcs-common/evidence/content/url/001.jpg +0 -0
- data/lib/rcs-common/evidence/content/url/002.jpg +0 -0
- data/lib/rcs-common/evidence/content/url/003.jpg +0 -0
- data/lib/rcs-common/evidence/device.rb +23 -0
- data/lib/rcs-common/evidence/download.rb +54 -0
- data/lib/rcs-common/evidence/exec.rb +0 -0
- data/lib/rcs-common/evidence/file.rb +129 -0
- data/lib/rcs-common/evidence/filesystem.rb +71 -0
- data/lib/rcs-common/evidence/info.rb +24 -0
- data/lib/rcs-common/evidence/keylog.rb +84 -0
- data/lib/rcs-common/evidence/mail.rb +237 -0
- data/lib/rcs-common/evidence/mic.rb +39 -0
- data/lib/rcs-common/evidence/mms.rb +36 -0
- data/lib/rcs-common/evidence/money.rb +676 -0
- data/lib/rcs-common/evidence/mouse.rb +62 -0
- data/lib/rcs-common/evidence/password.rb +60 -0
- data/lib/rcs-common/evidence/photo.rb +80 -0
- data/lib/rcs-common/evidence/position.rb +303 -0
- data/lib/rcs-common/evidence/print.rb +50 -0
- data/lib/rcs-common/evidence/screenshot.rb +53 -0
- data/lib/rcs-common/evidence/sms.rb +91 -0
- data/lib/rcs-common/evidence/url.rb +133 -0
- data/lib/rcs-common/fixnum.rb +48 -0
- data/lib/rcs-common/gridfs.rb +294 -0
- data/lib/rcs-common/heartbeat.rb +96 -0
- data/lib/rcs-common/keywords.rb +50 -0
- data/lib/rcs-common/mime.rb +65 -0
- data/lib/rcs-common/mongoid.rb +19 -0
- data/lib/rcs-common/pascalize.rb +62 -0
- data/lib/rcs-common/path_utils.rb +67 -0
- data/lib/rcs-common/resolver.rb +40 -0
- data/lib/rcs-common/rest.rb +17 -0
- data/lib/rcs-common/sanitize.rb +42 -0
- data/lib/rcs-common/serializer.rb +404 -0
- data/lib/rcs-common/signature.rb +141 -0
- data/lib/rcs-common/stats.rb +94 -0
- data/lib/rcs-common/symbolize.rb +10 -0
- data/lib/rcs-common/systemstatus.rb +136 -0
- data/lib/rcs-common/temporary.rb +13 -0
- data/lib/rcs-common/time.rb +24 -0
- data/lib/rcs-common/trace.rb +138 -0
- data/lib/rcs-common/trace.yaml +42 -0
- data/lib/rcs-common/updater/client.rb +354 -0
- data/lib/rcs-common/updater/dsl.rb +178 -0
- data/lib/rcs-common/updater/payload.rb +79 -0
- data/lib/rcs-common/updater/server.rb +126 -0
- data/lib/rcs-common/updater/shared_key.rb +55 -0
- data/lib/rcs-common/updater/tmp_dir.rb +13 -0
- data/lib/rcs-common/utf16le.rb +83 -0
- data/lib/rcs-common/version.rb +5 -0
- data/lib/rcs-common/winfirewall.rb +235 -0
- data/rcs-common.gemspec +64 -0
- data/spec/gridfs_spec.rb +637 -0
- data/spec/mongoid.yaml +6 -0
- data/spec/signature_spec.rb +105 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/updater_spec.rb +80 -0
- data/tasks/deploy.rake +21 -0
- data/tasks/protect.rake +90 -0
- data/test/helper.rb +17 -0
- data/test/test_binary.rb +107 -0
- data/test/test_cgi.rb +14 -0
- data/test/test_crypt.rb +125 -0
- data/test/test_evidence.rb +52 -0
- data/test/test_evidence_manager.rb +119 -0
- data/test/test_fixnum.rb +35 -0
- data/test/test_keywords.rb +137 -0
- data/test/test_mime.rb +49 -0
- data/test/test_pascalize.rb +100 -0
- data/test/test_path_utils.rb +24 -0
- data/test/test_rcs-common.rb +7 -0
- data/test/test_sanitize.rb +40 -0
- data/test/test_serialization.rb +20 -0
- data/test/test_stats.rb +90 -0
- data/test/test_symbolize.rb +20 -0
- data/test/test_systemstatus.rb +35 -0
- data/test/test_time.rb +56 -0
- data/test/test_trace.rb +25 -0
- data/test/test_utf16le.rb +71 -0
- data/test/test_winfirewall.rb +68 -0
- metadata +423 -0
data/test/test_mime.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestRcsCommon < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_mime_cod
|
6
|
+
mime = RCS::MimeType::get('test.cod')
|
7
|
+
expected = 'application/vnd.rim.cod'
|
8
|
+
assert_equal expected, mime
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_mime_jad
|
12
|
+
mime = RCS::MimeType::get('test.jad')
|
13
|
+
expected = 'text/vnd.sun.j2me.app-descriptor'
|
14
|
+
assert_equal expected, mime
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_mime_jnlp
|
18
|
+
mime = RCS::MimeType::get('test.jnlp')
|
19
|
+
expected = 'application/x-java-jnlp-file'
|
20
|
+
assert_equal expected, mime
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_mime_cab
|
24
|
+
mime = RCS::MimeType::get('test.cab')
|
25
|
+
#expected = 'application/vnd.ms-cab-compressed'
|
26
|
+
# fucking IE mobile not understanding the real mime type
|
27
|
+
expected = 'binary/octet-stream'
|
28
|
+
assert_equal expected, mime
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_mime_apk
|
32
|
+
mime = RCS::MimeType::get('test.apk')
|
33
|
+
expected = 'application/vnd.android.package-archive'
|
34
|
+
assert_equal expected, mime
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_mime_exe
|
38
|
+
mime = RCS::MimeType::get('test.exe')
|
39
|
+
expected = 'application/x-msdos-program'
|
40
|
+
assert_equal expected, mime
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_mime_unknown
|
44
|
+
mime = RCS::MimeType::get('test.unknown')
|
45
|
+
expected = 'binary/octet-stream'
|
46
|
+
assert_equal expected, mime
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
require 'securerandom'
|
5
|
+
|
6
|
+
class PascalizeTest < Test::Unit::TestCase
|
7
|
+
def test_pascalize
|
8
|
+
source = "ciao"
|
9
|
+
# length c i a o null
|
10
|
+
dest = "\x0a\x00\x00\x00" + "\x63\x00" + "\x69\x00" + "\x61\x00" + "\x6f\x00" + "\x00\x00"
|
11
|
+
pascal = source.pascalize
|
12
|
+
assert_equal dest, pascal
|
13
|
+
# this is a stream of bytes represented as ASCII
|
14
|
+
assert_equal 'ASCII-8BIT', pascal.encoding.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_unpascalize
|
18
|
+
# length c i a o null
|
19
|
+
source = "\x0a\x00\x00\x00" + "\x63\x00" + "\x69\x00" + "\x61\x00" + "\x6f\x00" + "\x00\x00"
|
20
|
+
dest = "ciao"
|
21
|
+
pascal = source.unpascalize
|
22
|
+
assert_equal dest, pascal
|
23
|
+
assert_equal dest.encoding, pascal.encoding
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_pascalize_unicode
|
27
|
+
source = "スパイ"
|
28
|
+
# length ス パ イ null
|
29
|
+
dest = "\x08\x00\x00\x00" + "\xb9\x30" + "\xd1\x30" + "\xa4\x30" + "\x00\x00"
|
30
|
+
pascal = source.pascalize
|
31
|
+
# we have to force the comparison in BINARY (alias for ASCII-8BIT) otherwise the
|
32
|
+
# assert_equal function will complain about invalid UTF-8 sequence
|
33
|
+
assert_equal dest.force_encoding('BINARY'), pascal.force_encoding('BINARY')
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_unpascalize_unicode
|
37
|
+
# length ス パ イ null
|
38
|
+
source = "\x08\x00\x00\x00" + "\xb9\x30" + "\xd1\x30" + "\xa4\x30" + "\x00\x00"
|
39
|
+
dest = "スパイ"
|
40
|
+
pascal = source.unpascalize
|
41
|
+
assert_equal dest, pascal
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_pascalize_with_zero
|
45
|
+
source = "a\x00s"
|
46
|
+
# length a null s null
|
47
|
+
dest = "\x08\x00\x00\x00" + "\x61\x00" + "\x00\x00" + "\x73\x00" + "\x00\x00"
|
48
|
+
assert_equal dest, source.pascalize
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_unpascalize_with_zero
|
52
|
+
# length a null s null
|
53
|
+
source = "\x08\x00\x00\x00" + "\x61\x00" + "\x00\x00" + "\x73\x00" + "\x00\x00"
|
54
|
+
dest = "a\x00s"
|
55
|
+
pascal = source.unpascalize
|
56
|
+
assert_equal dest, pascal
|
57
|
+
assert_equal dest.encoding, pascal.encoding
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_pascalize_null
|
61
|
+
source = ""
|
62
|
+
# length null
|
63
|
+
dest = "\x02\x00\x00\x00" + "\x00\x00"
|
64
|
+
assert_equal dest, source.pascalize
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_unpascalize_null
|
68
|
+
# length null
|
69
|
+
source = "\x02\x00\x00\x00" + "\x00\x00"
|
70
|
+
dest = ""
|
71
|
+
assert_equal dest, source.unpascalize
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_unpascalize_multi
|
75
|
+
multi_source = "\x0a\x00\x00\x00\x41\x00\x4c\x00\x6f\x00\x52\x00\x00\x00" +
|
76
|
+
"\x08\x00\x00\x00\xb9\x30\xd1\x30\xa4\x30\x00\x00" +
|
77
|
+
"\x1c\x00\x00\x00\x31\x00\x39\x00\x32\x00\x2e\x00\x31\x00\x36\x00\x38\x00\x2e\x00\x31\x00\x2e\x00\x31\x00\x37\x00\x35\x00\x00\x00"
|
78
|
+
multi_dest = ["ALoR", "スパイ", "192.168.1.175"]
|
79
|
+
assert_equal multi_dest, multi_source.unpascalize_ary
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_unpascalize_multi_and_random
|
83
|
+
multi_source = "\x0a\x00\x00\x00c\x00i\x00a\x00o\x00\x00\x00" +
|
84
|
+
"\x0a\x00\x00\x00m\x00i\x00a\x00o\x00\x00\x00" +
|
85
|
+
"\x08\x00\x00\x00b\x00a\x00o\x00\x00\x00" +
|
86
|
+
SecureRandom.random_bytes(32)
|
87
|
+
|
88
|
+
# the last part of random bytes should be ignored as error
|
89
|
+
multi_dest = ["ciao", "miao", "bao"]
|
90
|
+
assert_equal multi_dest, multi_source.unpascalize_ary
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_unpascalize_random
|
94
|
+
source = SecureRandom.random_bytes(64)
|
95
|
+
|
96
|
+
assert_nil source.unpascalize
|
97
|
+
assert_equal [], source.unpascalize_ary
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
require 'rcs-common/path_utils'
|
5
|
+
|
6
|
+
class PathutilsTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
class IncludePathUtils; include RCS::Common::PathUtils; end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@subject = IncludePathUtils.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_require_release
|
15
|
+
assert_raise { @subject.require_release 'folder/file' }
|
16
|
+
assert_raise { @subject.require_release 'rcsdb/folder/folder/file' }
|
17
|
+
|
18
|
+
assert_respond_to(Object.new, :require_release)
|
19
|
+
assert_respond_to(self, :require_release)
|
20
|
+
|
21
|
+
assert_raise(LoadError) { @subject.require_release 'rcs-project/file1' }
|
22
|
+
assert_raise(LoadError) { @subject.require_release 'rcs-project-release/file1' }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "test/unit"
|
4
|
+
|
5
|
+
class SanitizeTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_binary
|
8
|
+
input = "keep this and not those \x90 \x91 \x92"
|
9
|
+
output = 'keep this and not those '
|
10
|
+
assert_equal output, input.remove_invalid_chars
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_punctuation
|
14
|
+
input = "keep all .,;:!? and also @#%&*()[]{}\"'\\/+="
|
15
|
+
output = "keep all .,;:!? and also @#%&*()[]{}\"'\\/+="
|
16
|
+
assert_equal output, input.remove_invalid_chars
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_specials
|
20
|
+
input = "keep them \$ ^ |"
|
21
|
+
output = "keep them \$ ^ |"
|
22
|
+
assert_equal output, input.remove_invalid_chars
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_strip_html_tags
|
26
|
+
input = "Strip <i>these</i> tags!"
|
27
|
+
output = "Strip these tags!"
|
28
|
+
assert_equal output, input.strip_html_tags
|
29
|
+
|
30
|
+
input = "<b>Bold</b> no more! <a href='more.html'>See more here</a>..."
|
31
|
+
output = "Bold no more! See more here..."
|
32
|
+
assert_equal output, input.strip_html_tags
|
33
|
+
|
34
|
+
input = "<div id='top-bar'>Welcome to my website!</div>"
|
35
|
+
output = "Welcome to my website!"
|
36
|
+
assert_equal output, input.strip_html_tags
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class TestSerialization < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# Fake test
|
6
|
+
def test_generate_prefix
|
7
|
+
type = 0xff
|
8
|
+
size = 0xaabbcc
|
9
|
+
|
10
|
+
assert_equal "\xCC\xBB\xAA\xFF".force_encoding('BINARY'), RCS::Serialization::prefix(type, size)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_decode_prefix
|
14
|
+
type, size = RCS::Serialization::decode_prefix("\xCC\xBB\xAA\xFF")
|
15
|
+
|
16
|
+
assert_equal type, 0xff
|
17
|
+
assert_equal size, 0xaabbcc
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/test/test_stats.rb
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
module RCS
|
4
|
+
|
5
|
+
|
6
|
+
class StatsManager < Stats
|
7
|
+
def initialize
|
8
|
+
@sections = {:minutes => 0, :hours => 60, :days => 24, :weeks => 7}
|
9
|
+
@template = {count: 0}
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class TestStats < Test::Unit::TestCase
|
15
|
+
|
16
|
+
def setup
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_single_minute
|
21
|
+
statistic = StatsManager.new
|
22
|
+
statistic.add count: 1
|
23
|
+
stats = statistic.stats
|
24
|
+
|
25
|
+
assert_equal 1, stats[:total][:count]
|
26
|
+
assert_equal 1, stats[:minutes][:last][0][:count]
|
27
|
+
assert_equal 1, stats[:hours][:last][0][:count]
|
28
|
+
assert_equal 1, stats[:days][:last][0][:count]
|
29
|
+
assert_equal 1, stats[:weeks][:last][0][:count]
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_two_minute
|
33
|
+
statistic = StatsManager.new
|
34
|
+
statistic.add count: 1
|
35
|
+
statistic.calculate
|
36
|
+
statistic.add count: 1
|
37
|
+
stats = statistic.stats
|
38
|
+
|
39
|
+
assert_equal 2, stats[:total][:count]
|
40
|
+
assert_equal 1, stats[:minutes][:last][0][:count]
|
41
|
+
assert_equal 2, stats[:hours][:last][0][:count]
|
42
|
+
assert_equal 2, stats[:days][:last][0][:count]
|
43
|
+
assert_equal 2, stats[:weeks][:last][0][:count]
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_one_hour
|
47
|
+
statistic = StatsManager.new
|
48
|
+
|
49
|
+
1.upto(60) do
|
50
|
+
statistic.add count: 1
|
51
|
+
statistic.calculate
|
52
|
+
end
|
53
|
+
|
54
|
+
stats = statistic.stats
|
55
|
+
|
56
|
+
assert_equal 60, stats[:total][:count]
|
57
|
+
assert_equal 0, stats[:minutes][:last][0][:count]
|
58
|
+
assert_equal 0, stats[:hours][:last][0][:count]
|
59
|
+
assert_equal 60, stats[:days][:last][0][:count]
|
60
|
+
assert_equal 60, stats[:weeks][:last][0][:count]
|
61
|
+
|
62
|
+
assert_equal 1, stats[:minutes][:average][:count]
|
63
|
+
assert_equal 60, stats[:hours][:average][:count]
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_one_day
|
67
|
+
statistic = StatsManager.new
|
68
|
+
|
69
|
+
1.upto(1440) do
|
70
|
+
statistic.add count: 1
|
71
|
+
statistic.calculate
|
72
|
+
end
|
73
|
+
|
74
|
+
stats = statistic.stats
|
75
|
+
|
76
|
+
assert_equal 1440, stats[:total][:count]
|
77
|
+
assert_equal 0, stats[:minutes][:last][0][:count]
|
78
|
+
assert_equal 0, stats[:hours][:last][0][:count]
|
79
|
+
assert_equal 0, stats[:days][:last][0][:count]
|
80
|
+
assert_equal 1440, stats[:weeks][:last][0][:count]
|
81
|
+
|
82
|
+
assert_equal 1, stats[:minutes][:average][:count]
|
83
|
+
assert_equal 60, stats[:hours][:average][:count]
|
84
|
+
assert_equal 1440, stats[:days][:average][:count]
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end #RCS
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestRcsCommon < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def test_symbolize
|
6
|
+
src = {'one' => 1, 'two' => 2}
|
7
|
+
dst = {:one => 1, :two => 2}
|
8
|
+
|
9
|
+
assert_equal dst, src.symbolize
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_symbolize_mixed
|
13
|
+
src = {'one' => 1, 'two' => 2, 1 => 'one', 2 => 'two'}
|
14
|
+
dst = {:one => 1, :two => 2, 1 => 'one', 2 => 'two'}
|
15
|
+
|
16
|
+
assert_equal dst, src.symbolize
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module RCS
|
4
|
+
|
5
|
+
class TestStatus < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_disk
|
8
|
+
disk = SystemStatus.disk_free
|
9
|
+
|
10
|
+
# it should return a number
|
11
|
+
assert_kind_of Fixnum, disk
|
12
|
+
# it is a percentage
|
13
|
+
assert_equal true, (disk >= 0 and disk <= 100)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_load
|
17
|
+
load = SystemStatus.cpu_load
|
18
|
+
|
19
|
+
# it should return a number
|
20
|
+
assert_kind_of Fixnum, load
|
21
|
+
# it could be even greater than 100 on high load
|
22
|
+
assert_equal true, (load >= 0)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_process_cpu
|
26
|
+
cpu = SystemStatus.my_cpu_load('test')
|
27
|
+
|
28
|
+
# it should return a number
|
29
|
+
assert_kind_of Fixnum, cpu
|
30
|
+
# it is a percentage
|
31
|
+
assert_equal true, (cpu >= 0 and cpu <= 100)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end #RCS::
|
data/test/test_time.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class TestTime < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@high_memory = "\x90\xd9\xcb\x01"
|
7
|
+
@low_memory = "\x50\x67\xe0\x63"
|
8
|
+
@high = 0x01cbd990
|
9
|
+
@low = 0x63e06750
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_from_filetime
|
13
|
+
assert_equal '2011-03-03 10:47:28 UTC', Time.from_filetime(@high, @low).to_s
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_from_filetime_has_millisec
|
17
|
+
assert_equal Time.from_filetime(@high, @low).usec, 436001
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_unpack_from_memory
|
21
|
+
h = @high_memory.unpack('I').shift
|
22
|
+
l = @low_memory.unpack('I').shift
|
23
|
+
assert_equal '2011-03-03 10:47:28 UTC', Time.from_filetime(h, l).to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_to_filetime
|
27
|
+
date = Time.parse('2011-03-03 10:47:28 UTC')
|
28
|
+
date = Time.at(date.to_i, 436001)
|
29
|
+
|
30
|
+
filetime = date.to_filetime.pack('L*')
|
31
|
+
|
32
|
+
memory = (@low_memory + @high_memory).force_encoding('ASCII-8BIT')
|
33
|
+
|
34
|
+
assert_equal memory, filetime
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_epoch
|
38
|
+
epoch = Time.from_filetime(0, 0)
|
39
|
+
|
40
|
+
assert_equal '1601-01-01 00:00:00 UTC', epoch.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_from_and_to
|
44
|
+
now = Time.now.getutc
|
45
|
+
|
46
|
+
buff = StringIO.new
|
47
|
+
|
48
|
+
buff.write now.to_filetime.pack('L*')
|
49
|
+
buff.rewind
|
50
|
+
low, high = buff.read(8).unpack('L*')
|
51
|
+
check = Time.from_filetime(high, low)
|
52
|
+
|
53
|
+
# we explicitly ignore the usec, msec part
|
54
|
+
assert_equal now.to_s, check.to_s
|
55
|
+
end
|
56
|
+
end
|