provider-testing 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mof.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,58 @@
1
+ Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.co.jp>.
2
+ You can redistribute it and/or modify it under either the terms of the GPL
3
+ (see COPYING.txt file), or the conditions below:
4
+
5
+ 1. You may make and give away verbatim copies of the source form of the
6
+ software without restriction, provided that you duplicate all of the
7
+ original copyright notices and associated disclaimers.
8
+
9
+ 2. You may modify your copy of the software in any way, provided that
10
+ you do at least ONE of the following:
11
+
12
+ a) place your modifications in the Public Domain or otherwise
13
+ make them Freely Available, such as by posting said
14
+ modifications to Usenet or an equivalent medium, or by allowing
15
+ the author to include your modifications in the software.
16
+
17
+ b) use the modified software only within your corporation or
18
+ organization.
19
+
20
+ c) rename any non-standard executables so the names do not conflict
21
+ with standard executables, which must also be provided.
22
+
23
+ d) make other distribution arrangements with the author.
24
+
25
+ 3. You may distribute the software in object code or executable
26
+ form, provided that you do at least ONE of the following:
27
+
28
+ a) distribute the executables and library files of the software,
29
+ together with instructions (in the manual page or equivalent)
30
+ on where to get the original distribution.
31
+
32
+ b) accompany the distribution with the machine-readable source of
33
+ the software.
34
+
35
+ c) give non-standard executables non-standard names, with
36
+ instructions on where to get the original software distribution.
37
+
38
+ d) make other distribution arrangements with the author.
39
+
40
+ 4. You may modify and include the part of the software into any other
41
+ software (possibly commercial). But some files in the distribution
42
+ are not written by the author, so that they are not under this terms.
43
+
44
+ They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some
45
+ files under the ./missing directory. See each file for the copying
46
+ condition.
47
+
48
+ 5. The scripts and library files supplied as input to or produced as
49
+ output from the software do not automatically fall under the
50
+ copyright of the software, but belong to whomever generated them,
51
+ and may be sold commercially, and may be aggregated with this
52
+ software.
53
+
54
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
55
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
56
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57
+ PURPOSE.
58
+
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # About
2
+
3
+ This is a full testsuite for (the Ruby part of) cmpi-bindings.
4
+
5
+ # Author
6
+
7
+ Copyright (c) 2013 Klaus Kämpf <kkaempf@suse.de>
8
+
9
+ # License
10
+
11
+ Licensed under the Ruby license
12
+
13
+ # Requirements
14
+
15
+ Ruby (1.8 or 1.9), rake, sblim-sfcb, sblim-sfcc and sfcc.gem (from rubygems.org)
16
+
17
+ # Invocation
18
+
19
+ Run
20
+
21
+ rake
22
+
23
+ to run all test cases.
24
+
25
+ This will spawn a local sfcbd listening at port 12345, point it to the
26
+ Ruby cmpi provider from build/swig/ruby, load Ruby class provider from
27
+ test/rake/samples/providers and execute the tests from
28
+ test/rake/test_*.rb
29
+
30
+
31
+ # Issues
32
+
33
+ The testsuite currently fails to stop sfcbd after running all tests.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ TOPLEVEL = File.dirname(__FILE__)
5
+ NAME = File.basename TOPLEVEL
6
+ MOFDIR = "/usr/share/mof/#{NAME}"
7
+ CMPIDIR = "/usr/share/cmpi"
8
+ DESTDIR = ENV['DESTDIR']
9
+
10
+ task :default => [:test]
11
+
12
+ Dir['tasks/**/*.rake'].each { |t| load t }
@@ -0,0 +1,22 @@
1
+ #
2
+ # provider-testing.rb
3
+ #
4
+ # A Ruby-based testsuite for CIM providers
5
+ #
6
+ # Copyright (c) 2013 Klaus Kämpf <kkaempf@suse.de>
7
+ #
8
+ # Licensed under the Ruby license
9
+ #
10
+ $:.unshift(File.dirname(__FILE__)) unless
11
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
12
+
13
+ module ProviderTesting
14
+ VERSION = '0.3.2'
15
+ require 'provider-testing/helper'
16
+ def self.setup klass = "", namespace = "root/cimv2"
17
+ Helper.setup klass, namespace
18
+ end
19
+ def self.teardown
20
+ Helper.teardown
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ #
2
+ # test/env.rb
3
+ #
4
+
5
+ unless defined? TOPLEVEL
6
+ TOPLEVEL = ENV['TOPLEVEL'] || "/tmp/provider-testing"
7
+ Dir.mkdir(TOPLEVEL) unless Dir.exists?(TOPLEVEL)
8
+ end
9
+
10
+ NAMESPACE = "test/test"
11
+
12
+ TMPDIR = File.join(TOPLEVEL, "tmp")
13
+ PROVIDERDIR = "#{TOPLEVEL}/src" unless defined?(PROVIDERDIR)
@@ -0,0 +1,40 @@
1
+ #
2
+ # test/helper.rb
3
+ #
4
+
5
+ require "provider-testing/env"
6
+
7
+ module ProviderTesting
8
+ class Helper
9
+
10
+ # called from rake
11
+
12
+ def self.cimom= name
13
+ @@cimom ||= case name
14
+ when :sfcb
15
+ require_relative "./sfcb"
16
+ Sfcb.new :tmpdir => TMPDIR, :provider => PROVIDERDIR
17
+ when :pegasus
18
+ require_relative "./pegasus"
19
+ Pegasus.new :tmpdir => TMPDIR, :provider => PROVIDERDIR
20
+ else
21
+ raise "Unknown CIMOM #{@cimom}"
22
+ end
23
+ end
24
+ def self.cimom
25
+ @@cimom rescue (self.cimom = :sfcb; @@cimom)
26
+ end
27
+
28
+ # called from test/unit
29
+
30
+ def self.setup klass = "", namespace = "root/cimv2"
31
+ client = Sfcc::Cim::Client.connect(:uri => self.cimom.uri, :verify => false)
32
+ raise "Connection error" unless client
33
+ op = Sfcc::Cim::ObjectPath.new(namespace, klass, client)
34
+ return client, op
35
+ end
36
+ def self.teardown
37
+ self.cimom.stop
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,43 @@
1
+ #
2
+ # Transform generic .registration format to
3
+ # sfcb-specific .reg format
4
+ #
5
+ module ProviderTesting
6
+ # read .registration file, return array of
7
+ # 0 1 2 3 4..-1
8
+ # classname namespace providername providermodule caps
9
+ def self.rdreg from
10
+ File.open(from, "r") do |f|
11
+ while (l = f.gets)
12
+ next if l =~ /^\s*#.*$/
13
+ l.chomp!
14
+ next if l.empty?
15
+ reg = l.split(" ")
16
+ raise unless reg.size > 4
17
+ yield reg
18
+ end
19
+ end
20
+ end
21
+
22
+ def self.mkreg from, out
23
+ # STDERR.puts "mkreg #{from}"
24
+ self.rdreg from do |reg|
25
+ # 0 1 2 3 4..-1
26
+ # classname namespace providername providermodule caps
27
+ out.puts "[#{reg[0]}]"
28
+ out.puts " provider: #{reg[2]}"
29
+ out.puts " location: #{reg[3]}"
30
+ out.puts " type: #{reg[4..-1].join(' ')}"
31
+ out.puts " namespace: #{reg[1]}"
32
+ end
33
+ end
34
+
35
+ def self.convert_registrations outfile, *regfiles
36
+ # STDERR.puts "convert_registrations => #{outfile}"
37
+ File.open(outfile, "w+") do |out|
38
+ regfiles.each do |regfile|
39
+ mkreg regfile, out
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,147 @@
1
+ #
2
+ # Start and stop Pegasus for testing
3
+ #
4
+ require 'tmpdir'
5
+ require 'uri'
6
+
7
+ require "provider-testing/env"
8
+
9
+ module ProviderTesting
10
+ class Pegasus
11
+ attr_reader :pid, :uri, :dir, :stage_dir, :registration_dir, :providers_dir
12
+ private
13
+ def getconfig name
14
+ result = nil
15
+ pipe = IO.popen "sudo cimconfig -g #{name}"
16
+ unless pipe
17
+ system "sudo cimserver"
18
+ pipe = IO.popen "sudo cimconfig -g #{name}"
19
+ end
20
+ if pipe.read =~ /^Current value:\s+(.*)$/
21
+ result = $1
22
+ end
23
+ pipe.close
24
+ result
25
+ end
26
+ def setconfig name, value
27
+ puts "Setting #{name} to '#{value}'"
28
+ system "sudo cimconfig -p -s '#{name}=#{value}'"
29
+ end
30
+ public
31
+
32
+ def initialize args = {}
33
+ @execfile = "/usr/sbin/cimserver"
34
+ @port = 12345
35
+ @pid = nil
36
+ @config = {}
37
+
38
+ tmpdir = args[:tmpdir] || Dir.tmpdir
39
+
40
+ File.directory?(tmpdir) || Dir.mkdir(tmpdir)
41
+
42
+ @dir = File.join(tmpdir, "pegasus")
43
+ Dir.mkdir @dir rescue nil
44
+
45
+ STDERR.puts "Pegasus directory at #{@dir}"
46
+
47
+ # location of cmpi-bindings for Ruby
48
+ @providers_dir = File.expand_path(File.join(TOPLEVEL,"..","..","build","swig","ruby"))
49
+
50
+ # location of cmpi-bindings for Python
51
+ @providers_dir = File.expand_path(File.join(TOPLEVEL,"..","..","build","swig","python"))
52
+
53
+
54
+ end
55
+
56
+ def uri
57
+ unless @uri
58
+ if getconfig("enableHttpConnection") == "true"
59
+ scheme = "http"
60
+ port = getconfig("httpPort") || 5988
61
+ elsif getconfig("enableHttpsConnection") == "true"
62
+ scheme = "https"
63
+ port = getconfig("httpsPort") || 5989
64
+ else
65
+ raise "No enabled connection"
66
+ end
67
+ # scheme, userinfo, host, port, registry, path, opaque, query and fragment,
68
+ @uri = URI::HTTP.new scheme, "wsman:secret", "localhost", port
69
+ end
70
+ @uri
71
+ end
72
+
73
+ def mkcfg
74
+ # trace_components = [ALL
75
+ # AsyncOpNode
76
+ # Authentication
77
+ # Authorization
78
+ # BinaryMessageHandler
79
+ # Channel
80
+ # CimData
81
+ # CIMExportRequestDispatcher
82
+ # CIMOMHandle
83
+ # Config
84
+ # ConfigurationManager
85
+ # ControlProvider
86
+ # CQL
87
+ # DiscardedData
88
+ # Dispatcher
89
+ # ExportClient
90
+ # Http
91
+ # IndDelivery
92
+ # IndicationHandlerService
93
+ # IndicationService
94
+ # IndicationServiceInternal
95
+ # IndHandler
96
+ # IPC
97
+ # L10N
98
+ # Listener
99
+ # Memory
100
+ # MessageQueueService
101
+ # MetaDispatcher
102
+ # ObjectResolution
103
+ # OsAbstraction
104
+ # ProviderAgent
105
+ # ProviderManager
106
+ # ProvManager
107
+ # Registration
108
+ # Repository
109
+ # Server
110
+ # Shutdown
111
+ # SubscriptionService
112
+ # Thread
113
+ # UserManager
114
+ # WQL
115
+ # XmlIO
116
+ # XmlParser
117
+ # XmlReader
118
+ # XmlWriter
119
+ @config = {
120
+ "daemon" => "false",
121
+ "enableAuthentication" => "false",
122
+ "enableHttpConnection" => "true",
123
+ "enableHttpsConnection" => "false",
124
+ "httpPort" => @port,
125
+ "traceFilePath" => File.join(@dir, "trace.log"),
126
+ "traceLevel" => 1, # 1,2,3,4
127
+ # "traceComponents" => "",
128
+ # "logLevel" => "INFORMATION", # TRACE, INFORMATION, WARNING, SEVERE, FATAL.
129
+ # "repositoryDir" => "/var/lib/Pegasus/repository",
130
+ "providerDir" => "#{@providers_dir}:/usr/lib64/cmpi:/usr/lib/cmpi:/usr/lib64/pycim:/usr/lib/pycim:/usr/lib64/Pegasus/providers:/usr/lib/Pegasus/providers"
131
+ }
132
+ end
133
+
134
+ def start
135
+ unless system "sudo #{@execfile} --status"
136
+ cmd = ["sudo", @execfile] + @config.collect{ |k,v| "#{k}=#{v}" }
137
+ puts cmd.inspect
138
+ system *cmd
139
+ end
140
+ end
141
+
142
+ def stop
143
+ system "sudo #{@execfile} -s"
144
+ end
145
+ end
146
+
147
+ end # module
@@ -0,0 +1,52 @@
1
+ require "provider-testing/env"
2
+ require "provider-testing/mkreg"
3
+ require "provider-testing/sfcb"
4
+
5
+ #
6
+ # register
7
+ # args: Hash
8
+ # :klass => CIM class name
9
+ # :namespace => namespace, defaults to test/test
10
+ # :mofdir => where to find <klass>.mof, defaults to TOPLEVEL/samples/mof
11
+ # :regdir => where to find <klass>.registration, defaults to TOPLEVEL/samples/registration
12
+ #
13
+
14
+ module ProviderTesting
15
+ def self.register_file file
16
+ self.rdreg file do |reg|
17
+ # 0 1 2 3 4..-1
18
+ # classname namespace providername providermodule caps
19
+ self.register_klass :klass => reg[0], :namespace => reg[1]
20
+ end
21
+ end
22
+
23
+ def self.register_klass args
24
+ args[:mofdir] ||= File.join(TOPLEVEL, "mof")
25
+ args[:regdir] ||= File.join(TOPLEVEL, "registration")
26
+ args[:namespace] ||= "test/test"
27
+ self.register args[:klass], args[:namespace], args[:mofdir], args[:regdir]
28
+ end
29
+
30
+ def self.register klass, namespace, mofdir, regdir
31
+ raise "No :klass passed to registration" unless klass
32
+ tmpregname = File.join(TMPDIR, "#{klass}.reg")
33
+
34
+ # convert generic <klass>.registration to sfcb-specific <klass>.reg
35
+ convert_registrations tmpregname, File.join(regdir, "#{klass}.registration")
36
+
37
+ # stage .reg+.mof to namespace
38
+ cmd = "sfcbstage -s #{Helper.cimom.stage_dir} -n #{namespace} -r #{tmpregname} #{File.join(mofdir,klass)}.mof"
39
+ # STDERR.puts cmd
40
+ res = `#{cmd} 2> #{TMPDIR}/sfcbstage.err`
41
+ raise "Failed: #{cmd}" unless $? == 0
42
+ end
43
+
44
+ def self.mkrepos
45
+ cimom = Helper.cimom
46
+ cmd = "sfcbrepos -f -s #{cimom.stage_dir} -r #{cimom.registration_dir}"
47
+ # STDERR.puts cmd
48
+ res = `#{cmd} 2> #{TMPDIR}/sfcbrepos.err`
49
+ raise "Failed: #{cmd}" unless $? == 0
50
+ end
51
+
52
+ end # module
@@ -0,0 +1,105 @@
1
+ #
2
+ # Start and stop sfcb for testing
3
+ #
4
+ require 'tmpdir'
5
+ require 'uri'
6
+
7
+ require "provider-testing/env"
8
+
9
+ module ProviderTesting
10
+ class Sfcb
11
+ attr_reader :pid, :uri, :dir, :stage_dir, :registration_dir, :providers_dir
12
+
13
+ def initialize args = {}
14
+ @execfile = "/usr/sbin/sfcbd"
15
+ @port = 12345
16
+ @pid = nil
17
+
18
+ tmpdir = args[:tmpdir] || Dir.tmpdir
19
+
20
+ File.directory?(tmpdir) || Dir.mkdir(tmpdir)
21
+
22
+ @dir = File.join(tmpdir, "sfcb")
23
+ Dir.mkdir @dir rescue nil
24
+
25
+ # STDERR.puts "Sfcb directory at #{@dir}"
26
+
27
+ # location of cmpi-bindings for Ruby
28
+ @providers_dir = PROVIDERDIR
29
+
30
+ @stage_dir = File.join(dir, "stage")
31
+ Dir.mkdir @stage_dir rescue nil
32
+ File.symlink("/var/lib/sfcb/stage/default.reg", File.join(@stage_dir, "default.reg")) rescue nil
33
+ @mofs_dir = args[:mof] || File.join(@stage_dir, "mofs")
34
+ Dir.mkdir @mofs_dir rescue nil
35
+
36
+ @registration_dir = args[:registration] || File.join(dir, "registration")
37
+ Dir.mkdir @registration_dir rescue nil
38
+
39
+ # Kernel.system "sfcbrepos", "-s", @stage_dir, "-r", @registration_dir, "-f"
40
+
41
+ @uri = URI::HTTP.build :host => 'localhost', :port => @port, :userinfo => "wsman:secret"
42
+ end
43
+
44
+ def mkcfg
45
+ @cfgfile = File.join(@dir, "sfcb.cfg")
46
+ File.open(@cfgfile, "w+") do |f|
47
+ # create sfcb config file
48
+
49
+ {
50
+ "enableHttp" => true,
51
+ "httpPort" => @port,
52
+ "enableHttps" => false,
53
+ "enableSlp" => false,
54
+ "providerSampleInterval" => 5,
55
+ "providerTimeoutInterval" => 10,
56
+ "keepaliveTimeout" => 2,
57
+ "registrationDir" => @registration_dir,
58
+ "localSocketPath" => File.join(@dir, "sfcbLocalSocket"),
59
+ "httpSocketPath" => File.join(@dir, "sfcbHttpSocket"),
60
+ "providerDirs" => " #{@providers_dir} /usr/lib64/sfcb /usr/lib/sfcb /usr/lib64 /usr/lib /usr/lib64/cmpi /usr/lib/cmpi"
61
+ }.each do |k,v|
62
+ f.puts "#{k}: #{v}"
63
+ end
64
+ end
65
+ end
66
+
67
+ def start
68
+ raise "Already running" if @pid
69
+ @pid = fork
70
+ if @pid.nil?
71
+ # child
72
+ sfcb_trace_file = File.join(TMPDIR, "sfcb_trace_file")
73
+ sblim_trace_file = File.join(TMPDIR, "sblim_trace_file")
74
+ ruby_providers_dir = PROVIDERDIR
75
+ Dir.chdir File.expand_path("..", File.dirname(__FILE__))
76
+ {
77
+ "SFCB_TRACE_FILE" => sfcb_trace_file,
78
+ "SFCB_TRACE" => 4,
79
+ "SBLIM_TRACE_FILE" => sblim_trace_file,
80
+ "SBLIM_TRACE" => 4,
81
+ # "CMPI_BINDINGS_TRACE_LEVEL" => 4,
82
+ # "CMPISFCC_DEBUG" => "true",
83
+ "RUBY_PROVIDERS_DIR" => ruby_providers_dir
84
+ }.each do |k,v|
85
+ ENV[k] = v.to_s
86
+ end
87
+ File.delete(sfcb_trace_file) rescue nil
88
+ File.delete(sblim_trace_file) rescue nil
89
+ $stderr.reopen(File.join(TMPDIR, "sfcbd.err"), "w")
90
+ $stdout.reopen(File.join(TMPDIR, "sfcbd.out"), "w")
91
+ Kernel.exec "#{@execfile}", "-c", "#{@cfgfile}"#, "-t", "32768"
92
+ end
93
+ @pid
94
+ end
95
+
96
+ def stop
97
+ return unless @pid
98
+ Process.kill "QUIT", @pid
99
+ sleep 3
100
+ Process.wait
101
+ @pid = nil
102
+ end
103
+ end
104
+
105
+ end # module
@@ -0,0 +1,2 @@
1
+ require 'rake/clean'
2
+ CLEAN.include("tmp")
@@ -0,0 +1,7 @@
1
+ task :sfcb_configuration do
2
+ ProviderTesting::Helper.cimom.mkcfg
3
+ end
4
+
5
+ task :pegasus_configuration do
6
+ ProviderTesting::Helper.cimom.mkcfg
7
+ end
@@ -0,0 +1,9 @@
1
+ require "provider-testing/helper"
2
+
3
+ task :cimom_is_pegasus do
4
+ ProviderTesting::Helper.cimom = :pegasus
5
+ end
6
+
7
+ task :pegasus => [:cimom_is_pegasus, :pegasus_configuration, :pegasus_registration] do
8
+ ProviderTesting::Helper.cimom.start
9
+ end
@@ -0,0 +1,15 @@
1
+ task :sfcb_registration => [:sfcb_configuration] do |t|
2
+ puts "Register all providers"
3
+
4
+ require "provider-testing/registration"
5
+ Dir['registration/*.registration'].each do |regname|
6
+ puts " #{regname}"
7
+ ProviderTesting.register_file regname
8
+ end
9
+ ProviderTesting.mkrepos
10
+ end
11
+
12
+
13
+ task :pegasus_registration => [:pegasus_configuration] do
14
+ puts "Registering Pegasus providers"
15
+ end
@@ -0,0 +1,9 @@
1
+ require "provider-testing/helper"
2
+
3
+ task :cimom_is_sfcb do
4
+ ProviderTesting::Helper.cimom = :sfcb
5
+ end
6
+
7
+ task :sfcb => [:cimom_is_sfcb, :sfcb_configuration, :sfcb_registration] do
8
+ ProviderTesting::Helper.cimom.start
9
+ end
@@ -0,0 +1,11 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs = [".", "test"]
5
+ t.warning = true
6
+ t.verbose = true
7
+ t.test_files = FileList['test/test_*.rb']
8
+ end
9
+
10
+ task :test => [:sfcb]
11
+ task :pegtest => [:pegasus]
@@ -0,0 +1,5 @@
1
+ -------------------------------------------------------------------
2
+ Tue Apr 2 11:33:26 UTC 2013 - kkaempf@suse.com
3
+
4
+ - Initial version 0.2.0
5
+
@@ -0,0 +1,68 @@
1
+ #
2
+ # spec file for package rubygem-provider-testing (Version 0.0.1)
3
+ #
4
+ # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
5
+ #
6
+ # All modifications and additions to the file contributed by third parties
7
+ # remain the property of their copyright owners, unless otherwise agreed
8
+ # upon. The license for this file, and modifications and additions to the
9
+ # file, is the same license as for the pristine package itself (unless the
10
+ # license for the pristine package is not an Open Source License, in which
11
+ # case the license is the MIT License). An "Open Source License" is a
12
+ # license that conforms to the Open Source Definition (Version 1.9)
13
+ # published by the Open Source Initiative.
14
+
15
+ # Please submit bugfixes or comments via http://bugs.opensuse.org/
16
+ #
17
+
18
+ # norootforbuild
19
+
20
+ Name: rubygem-provider-testing
21
+ Version: 0.2.0
22
+ %define mod_name provider-testing
23
+ %define mod_full_name %{mod_name}-%{version}
24
+ BuildRequires: ruby-macros >= 1
25
+ Url: http://en.opensuse.org/Software_Management/CIM
26
+ License: LGPL-2.1
27
+ Group: Development/Tools/Other
28
+ AutoReqProv: on
29
+ Release: 2
30
+ Summary: CIM provider test framework
31
+ Source: %{mod_full_name}.gem
32
+ Requires: sblim-sfcb
33
+ BuildRoot: %{_tmppath}/%{name}-%{version}-build
34
+
35
+ %description
36
+ A Ruby framework for automated CIM provider testing
37
+
38
+ %package doc
39
+ Summary: RDoc documentation for %{mod_name}
40
+ Group: Development/Languages/Ruby
41
+ Requires: %{name} = %{version}
42
+
43
+ %description doc
44
+ Documentation generated at gem installation time.
45
+ Usually in RDoc and RI formats.
46
+
47
+ %prep
48
+ #gem_unpack
49
+ #if you need patches, apply them here and replace the # with a % sign in the surrounding lines
50
+ #gem_build
51
+
52
+ %build
53
+
54
+ %install
55
+ %gem_install -f
56
+
57
+ %clean
58
+ rm -rf $RPM_BUILD_ROOT
59
+
60
+ %files
61
+ %defattr(-,root,root)
62
+ %{_libdir}/ruby/gems/%{rb_ver}/cache/%{mod_full_name}.gem
63
+ %{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/
64
+ %{_libdir}/ruby/gems/%{rb_ver}/specifications/%{mod_full_name}.gemspec
65
+
66
+ %files doc
67
+ %defattr(-,root,root,-)
68
+ %doc %{_libdir}/ruby/gems/%{rb_ver}/doc/%{mod_full_name}/
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "provider-testing"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "provider-testing"
7
+ s.version = ProviderTesting::VERSION
8
+
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ["Klaus Kämpf"]
11
+ s.email = ["kkaempf@suse.de"]
12
+ s.homepage = "https://github.com/kkaempf/providers-testing"
13
+ s.summary = %q{A testing framework for CIM providers}
14
+ s.description = %q{This framework uses Ruby, Rake and a local
15
+ instance of the SFCB CIMOM to run tests against CIM providers}
16
+
17
+ s.rubyforge_project = "provider-testing"
18
+
19
+ # Ruby SFCC bindings
20
+ s.add_dependency("sfcc", ["~> 0.6"])
21
+
22
+ s.add_development_dependency('rake')
23
+ s.add_development_dependency('bundler')
24
+
25
+ s.files = `git ls-files`.split("\n")
26
+ s.files.reject! { |fn| fn == '.gitignore' }
27
+ s.extra_rdoc_files = Dir['README.md', 'LICENSE']
28
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
29
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
31
+ end
data/tasks/clean.rake ADDED
@@ -0,0 +1,9 @@
1
+ task :clean do
2
+ `rm -rf *~`
3
+ `rm -rf */*~`
4
+ `rm -rf */*/*~`
5
+ `rm -f Gemfile.lock`
6
+ `rm -rf doc`
7
+ `rm -rf .yardoc`
8
+ `rm -rf pkg`
9
+ end
data/tasks/doc.rake ADDED
@@ -0,0 +1,14 @@
1
+ begin
2
+ require 'yard'
3
+ YARD::Rake::YardocTask.new(:doc) do |t|
4
+ t.files = ['lib/**/*.rb']
5
+ t.options = ['--no-private']
6
+ end
7
+ rescue LoadError
8
+ STDERR.puts "Install yard if you want prettier docs"
9
+ require 'rdoc/task'
10
+ Rake::RDocTask.new(:doc) do |rdoc|
11
+ rdoc.rdoc_dir = "doc"
12
+ rdoc.title = "provider-testing #{ProviderTesting::VERSION}"
13
+ end
14
+ end
data/tasks/test.rake ADDED
@@ -0,0 +1,6 @@
1
+ Rake::TestTask.new do |t|
2
+ t.libs << File.expand_path('../test', __FILE__)
3
+ t.libs << File.expand_path('../', __FILE__)
4
+ t.test_files = FileList['test/test*.rb']
5
+ t.verbose = true
6
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: provider-testing
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Klaus Kämpf
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sfcc
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.6'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.6'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: ! 'This framework uses Ruby, Rake and a local
63
+
64
+ instance of the SFCB CIMOM to run tests against CIM providers'
65
+ email:
66
+ - kkaempf@suse.de
67
+ executables: []
68
+ extensions: []
69
+ extra_rdoc_files:
70
+ - README.md
71
+ - LICENSE
72
+ files:
73
+ - Gemfile
74
+ - LICENSE
75
+ - README.md
76
+ - Rakefile
77
+ - lib/provider-testing.rb
78
+ - lib/provider-testing/env.rb
79
+ - lib/provider-testing/helper.rb
80
+ - lib/provider-testing/mkreg.rb
81
+ - lib/provider-testing/pegasus.rb
82
+ - lib/provider-testing/registration.rb
83
+ - lib/provider-testing/sfcb.rb
84
+ - lib/tasks/clean.rake
85
+ - lib/tasks/configuration.rake
86
+ - lib/tasks/pegasus.rake
87
+ - lib/tasks/registration.rake
88
+ - lib/tasks/sfcb.rake
89
+ - lib/tasks/test.rake
90
+ - package/rubygem-provider-testing.changes
91
+ - package/rubygem-provider-testing.spec
92
+ - provider-testing.gemspec
93
+ - tasks/clean.rake
94
+ - tasks/doc.rake
95
+ - tasks/test.rake
96
+ homepage: https://github.com/kkaempf/providers-testing
97
+ licenses: []
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project: provider-testing
116
+ rubygems_version: 1.8.23
117
+ signing_key:
118
+ specification_version: 3
119
+ summary: A testing framework for CIM providers
120
+ test_files: []
121
+ has_rdoc: