mincore 0.0.9.3.pre.6 → 0.0.9.3.pre.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04072cb8e6a47e2caf76f1bfec55c96d61dab4c4
4
- data.tar.gz: 91a65f908ef21bd83006065033f4c862bec9bd62
3
+ metadata.gz: 9e5c35f3711938cde082b35aa1028132c750477a
4
+ data.tar.gz: 0e96b1aa962394b0c0f0a5f1e3617a31c563f6f3
5
5
  SHA512:
6
- metadata.gz: 11aeb4e96b4b84e22dd7d2b0d29d2c9027aedbf09890ce6387e1d64c664850b2322674de660640a7a18187cbf299829d7346394ae2dda42e8cfc67e2a45ba516
7
- data.tar.gz: 38d74cee2c2d15e0aba22ad0be2bdd426cfc2cb424b1ea90367986c5753bf3d59c04f5063123abb1b1f6eacb6be4a426864b0d21ef7f29d35e6b3a712e80c3d0
6
+ metadata.gz: b0e2e583d91760146b5da9714af8801962739e6b35fc0388b1411a4db8f96a7042d31f043afa28c3b1221eacbbb1c722067bed6b02641037c56389744cc2bfaf
7
+ data.tar.gz: 5de7a220501f2ec55b5fedcea2850092e5da0d389cb05fbcae938d6e93a740ca1a51778cd791a143e8261db6663ab570d5033a93780d4d739cb0f8ece75c9066
data/bin/cachedel.rb ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ # Simple script to _attempt_ to purge the cached pages of a (single) file.
3
+
4
+ require 'mincore'
5
+
6
+ def process_errno(e)
7
+ puts e.message
8
+ exit 1
9
+ end
10
+
11
+ def process_unknown_exception(e)
12
+ puts "Unknown caught exception: #{e.message}"
13
+ exit 1
14
+ end
15
+
16
+ def process_file(filename)
17
+ begin
18
+ retcode = File.cachedel(filename, 2)
19
+ puts "retcode=#{retcode}" if ENV["DEBUG"]
20
+ exit retcode unless retcode == 0
21
+ rescue Errno::EBADF => e
22
+ process_errno e
23
+ rescue Errno::EACCES => e
24
+ process_errno e
25
+ rescue Exception => e
26
+ process_unknown_exception e
27
+ end
28
+ end
29
+
30
+ process_file(ARGV[0])
31
+
data/mincore.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'mincore'
3
- s.version = '0.0.9.3.pre.6'
3
+ s.version = '0.0.9.3.pre.7'
4
4
  s.date = '2013-11-19'
5
5
 
6
6
  s.homepage = 'http://github.com/noushi/ruby-mincore'
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  #s.files = ["lib/mincore.rb"]
22
22
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
23
23
 
24
- s.executables << "cachestats.rb"
24
+ s.executables = ["cachestats.rb", "cachedel.rb"]
25
25
 
26
26
  s.add_runtime_dependency "RubyInline", [">= 3.10.1"]
27
27
  s.add_development_dependency "RubyInline", [">= 3.10.1"]
data/test/mincore_test.rb CHANGED
@@ -93,10 +93,20 @@ class MincoreTest < Test::Unit::TestCase
93
93
  _generic_cachedel_test 0
94
94
  end
95
95
 
96
+ # This test works when the file size is big enough (worked with 4MB and 40MB).
97
+ # On smaller files, file keeps being cached (tried with <400KB)
96
98
  def test_cachedel_non_empty_file
97
- _generic_cachedel_test 400
99
+ _generic_cachedel_test 4000
98
100
  end
99
101
 
102
+ def test_cachedel_devnull
103
+ assert_raise(Errno::EBADF) { File.cachedel("/dev/null") }
104
+ end
105
+
106
+ # don't run this as root, mincore() will succeed!
107
+ def test_cachedel_etcshadow
108
+ assert_raise(Errno::EACCES) { File.cachedel("/etc/shadow") }
109
+ end
100
110
 
101
111
  def _generic_mincore_test(size_kb, result=nil, delete=true)
102
112
  size = size_kb * 1024
@@ -145,7 +155,8 @@ class MincoreTest < Test::Unit::TestCase
145
155
  assert_equal ret, pieces.tinify, f.describe
146
156
  else
147
157
  ret = [[true, f.numpages]]
148
- if ret != pieces.tinify #The code/test is still valid even if the file is fully kept cached
158
+ feeling_lucky = true # see test_cachedel_non_empty_file() doc to understand this
159
+ if feeling_lucky or ret != pieces.tinify #The code/test is still valid even if the file is fully kept cached
149
160
  assert_not_equal ret, pieces.tinify, f.describe
150
161
  end
151
162
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mincore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9.3.pre.6
4
+ version: 0.0.9.3.pre.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reda NOUSHI
@@ -45,6 +45,7 @@ description: " mincore provides Ruby bindings for Linux cache manipulation, \
45
45
  email: reda_noushi@yahoo.com
46
46
  executables:
47
47
  - cachestats.rb
48
+ - cachedel.rb
48
49
  extensions: []
49
50
  extra_rdoc_files: []
50
51
  files:
@@ -55,6 +56,7 @@ files:
55
56
  - README.md
56
57
  - Rakefile
57
58
  - TODO
59
+ - bin/cachedel.rb
58
60
  - bin/cachestats.rb
59
61
  - bin/ci/before_build.sh
60
62
  - lib/mincore.rb
@@ -82,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
84
  version: 1.3.1
83
85
  requirements: []
84
86
  rubyforge_project:
85
- rubygems_version: 2.1.10
87
+ rubygems_version: 2.0.3
86
88
  signing_key:
87
89
  specification_version: 4
88
90
  summary: Ruby bindings for Linux cache manipulation
@@ -90,4 +92,3 @@ test_files:
90
92
  - test/mincore_test.rb
91
93
  - test/test_helper.rb
92
94
  - test/tinify_test.rb
93
- has_rdoc: