File: vmstat_spec.rb

package info (click to toggle)
ruby-vmstat 2.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 344 kB
  • sloc: ruby: 1,136; ansic: 347; makefile: 3
file content (50 lines) | stat: -rw-r--r-- 1,624 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require 'spec_helper'

describe Vmstat do
  context "#boot_time" do
    let(:boot_time) { Vmstat.boot_time }

    it "should be an array" do
      boot_time.should be_a(Time)
    end

    it "has to be a time before now" do
      boot_time.should < Time.now
    end
  end
  
  context "Vmstat#filter_devices" do
    unless travis? # no external ethernet devices on travis ci
     # Cannot detect ethernet interface on s390x
      xit "should filter ethernet devices" do
        Vmstat.ethernet_devices.size.should >= 1
      end
    end

    # buildd can have more than loopback device
    xit "should filter loopback devices" do
      Vmstat.loopback_devices.size.should == 1
    end
  end

  context "performance" do
    percent = RUBY_VERSION.to_i == 2 ? 26 : 10
    
    shared_examples "a not memory leaking method" do |method_name, *args|
      xit "should not grow the memory in method #{method_name} " +
         "more than #{percent}% " do
        mem_before = Vmstat.task.resident_size
        10000.times { Vmstat.send(method_name, *args) }
        mem_after = Vmstat.task.resident_size
        mem_after.should < (mem_before * (1 + percent / 100.0))
      end
    end

    it_should_behave_like "a not memory leaking method", :network_interfaces
    it_should_behave_like "a not memory leaking method", :cpu
    it_should_behave_like "a not memory leaking method", :memory
    it_should_behave_like "a not memory leaking method", :disk, "/"
    it_should_behave_like "a not memory leaking method", :boot_time
    it_should_behave_like "a not memory leaking method", :load_average
  end if ENV['PERF'] == "1"
end