Module: Stella::Data::Helpers

Included in:
Stella::Data::HTTP::Request
Defined in:
lib/stella/data.rb

Instance Method Summary collapse

Instance Method Details

#file(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/stella/data.rb', line 6

def file(*args)
  input = args.size > 1 ? args : args.first
  Proc.new do
    value = case input.class.to_s
    when "String"
      Stella.ld "FILE: #{input}"
      path = File.exists?(input) ? input : File.join(@base_path, input)
      Stella.ld "Creating file object: #{path}"
      File.new(path)
    when "Proc"
      input.call
    else
      input
    end
    raise Stella::Testplan::Usecase::UnknownResource, input if value.nil?
    Stella.ld "FILE: #{value}"
    value
  end
end

#random(*args) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/stella/data.rb', line 26

def random(*args)
  input = args.size > 1 ? args : args.first
  Proc.new do
    value = case input.class.to_s
    when "Symbol"
      resource(input)
    when "Array"
      input
    when "Range"
      input.to_a
    when "Proc"
      input.call
    when "Fixnum"
      Stella::Utils.strand( input )
    when "NilClass"
      Stella::Utils.strand( rand(100) )
    end
    raise Stella::Testplan::Usecase::UnknownResource, input if value.nil?
    Stella.ld "RANDVALUES: #{input} #{value.inspect}"
    value = value[ rand(value.size) ] if value.is_a?(Array)
    Stella.ld "SELECTED: #{value}"
    value
  end
end

#rsequential(*args) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/stella/data.rb', line 80

def rsequential(*args)
  input = args.size > 1 ? args : args.first
  Proc.new do
    value = case input.class.to_s
    when "Symbol"
      ret = resource(input)
      ret
    when "Array"
      input
    when "Range"
      input.to_a
    when "Proc"
      input.call
    end
    digest = value.gibbler
    @rsequential_offset ||= {}
    @rsequential_offset[digest] ||= value.size-1 rescue 1
    Stella.ld "RSEQVALUES: #{input} #{value.inspect} #{@rsequential_offset[digest]}"
    if value.is_a?(Array)
      size = value.size
      @rsequential_offset[digest] = size-1 if @rsequential_offset[digest] < 0
      value = value[ @rsequential_offset[digest] ] 
      @rsequential_offset[digest] -= 1
    end
    Stella.ld "SELECTED: #{value}"
    value
  end
end

#sequential(*args) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/stella/data.rb', line 51

def sequential(*args)
  input = args.size > 1 ? args : args.first
  Proc.new do
    value = case input.class.to_s
    when "Symbol"
      ret = resource(input)
      ret
    when "Array"
      input
    when "Range"
      input.to_a
    when "Proc"
      input.call
    end
    digest = value.gibbler
    @sequential_offset ||= {}
    @sequential_offset[digest] ||= 0
    Stella.ld "SEQVALUES: #{input} #{value.inspect} #{@sequential_offset[digest]}"
    if value.is_a?(Array)
      size = value.size
      @sequential_offset[digest] = 0 if @sequential_offset[digest] >= size
      value = value[ @sequential_offset[digest] ] 
      @sequential_offset[digest] += 1
    end
    Stella.ld "SELECTED: #{value}"
    value
  end
end