win32-service 0.8.3 → 0.8.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 00420c9a08f4efbc505916adfdf394aaa827d88d
4
- data.tar.gz: 7cc804d073520c13b7a0d3cb376eef7594131d7b
3
+ metadata.gz: 5c61135d653d2cd836f4b191664aade237c35ceb
4
+ data.tar.gz: 1d5c27933e9a68469dcc40ca580307e521eebfe0
5
5
  SHA512:
6
- metadata.gz: 2468f2cddb5f34466323c9e000d5655fe533c67b120e836bb79cdc08359afc44087b35031a3815d6d2b809650c7c060dfe8f51779f2e0c201f29c6462b16550d
7
- data.tar.gz: d37585b5947428e224cd0840ddc806c6a5359971a1eedd3bd3b325eff0a1914e1c5fb07177a10a5ed81a01cb9b644a49e3e6b351fb302e5d5e43e5ca5da1621d
6
+ metadata.gz: c23f2a150c83ab807c44d15b7fd52efdfcfef3018472470838ebf3895685f10475a427e78375ca75f9b01367816a7668b920ca1dd257d4515df90b3fe67e22cb
7
+ data.tar.gz: 705f5de01cdf3e709350385763afe7b7aa3bdf63c81b0b914da6a1c84181435b116e38617cf6a96974b2c836bf40632b25bf4ebd7463aadc1528606e674671ec
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.8.4 - 23-Jan-2014
2
+ * Added support for the delayed start startup type. Thanks go to Jim Arnold
3
+ for the patch.
4
+ * Fixed the service test that ensures that trying to start an already running
5
+ service will raise an error. Thanks again to Jim Arnold for the patch.
6
+
1
7
  == 0.8.3 - 1-Nov-2013
2
8
  * Fixed a bug where a service's state could be changed when merely
3
9
  interrogating the service. Thanks go to Glenn Sarti / Puppet Labs
data/README CHANGED
@@ -56,7 +56,7 @@
56
56
  Add service_session_change hook
57
57
 
58
58
  == Copyright
59
- (C) 2003-2013, Daniel J. Berger, All Rights Reserved
59
+ (C) 2003-2014, Daniel J. Berger, All Rights Reserved
60
60
 
61
61
  == License
62
62
  Artistic 2.0
@@ -18,7 +18,7 @@ module Win32
18
18
  extend Windows::Functions
19
19
 
20
20
  # The version of this library
21
- VERSION = '0.8.3'
21
+ VERSION = '0.8.4'
22
22
 
23
23
  private
24
24
 
@@ -17,7 +17,7 @@ module Win32
17
17
  extend Windows::Functions
18
18
 
19
19
  # The version of the win32-service library
20
- VERSION = '0.8.3'
20
+ VERSION = '0.8.4'
21
21
 
22
22
  # SCM security and access rights
23
23
 
@@ -244,7 +244,8 @@ module Win32
244
244
  :reboot_message,
245
245
  :command,
246
246
  :num_actions,
247
- :actions
247
+ :actions,
248
+ :delayed_start
248
249
  )
249
250
 
250
251
  # :startdoc: #
@@ -479,7 +480,8 @@ module Win32
479
480
  'failure_actions' => nil,
480
481
  'failure_delay' => 0,
481
482
  'service_name' => nil,
482
- 'host' => nil
483
+ 'host' => nil,
484
+ 'delayed_start' => false
483
485
  }
484
486
 
485
487
  # Validate the hash options
@@ -563,6 +565,19 @@ module Win32
563
565
  FFI.raise_windows_error('ChangeServiceConfig2') unless bool
564
566
  end
565
567
 
568
+ if opts['delayed_start']
569
+ delayed_start = SERVICE_DELAYED_AUTO_START_INFO.new
570
+ delayed_start[:fDelayedAutostart] = opts['delayed_start']
571
+
572
+ bool = ChangeServiceConfig2(
573
+ handle_scs,
574
+ SERVICE_CONFIG_DELAYED_AUTO_START_INFO,
575
+ delayed_start
576
+ )
577
+
578
+ FFI.raise_windows_error('ChangeServiceConfig2') unless bool
579
+ end
580
+
566
581
  if opts['failure_reset_period'] || opts['failure_reboot_message'] ||
567
582
  opts['failure_command'] || opts['failure_actions']
568
583
  then
@@ -1069,6 +1084,15 @@ module Win32
1069
1084
  else
1070
1085
  description = buf.read_pointer.read_string
1071
1086
  end
1087
+
1088
+ delayed_start_buf = get_config2_info(handle_scs, SERVICE_CONFIG_DELAYED_AUTO_START_INFO)
1089
+
1090
+ if delayed_start_buf.is_a?(FFI::MemoryPointer)
1091
+ delayed_start_info = SERVICE_DELAYED_AUTO_START_INFO.new(delayed_start_buf)
1092
+ delayed_start = delayed_start_info[:fDelayedAutostart]
1093
+ else
1094
+ delayed_start = false
1095
+ end
1072
1096
  else
1073
1097
  msg = "WARNING: The registry entry for the #{service_name} "
1074
1098
  msg += "service could not be found."
@@ -1153,7 +1177,8 @@ module Win32
1153
1177
  reboot_msg,
1154
1178
  command,
1155
1179
  num_actions,
1156
- actions
1180
+ actions,
1181
+ delayed_start
1157
1182
  )
1158
1183
 
1159
1184
  if block_given?
@@ -36,6 +36,10 @@ module Windows
36
36
  layout(:lpDescription, :pointer)
37
37
  end
38
38
 
39
+ class SERVICE_DELAYED_AUTO_START_INFO < FFI::Struct
40
+ layout(:fDelayedAutostart, :bool)
41
+ end
42
+
39
43
  class QUERY_SERVICE_CONFIG < FFI::Struct
40
44
  layout(
41
45
  :dwServiceType, :dword,
@@ -17,7 +17,7 @@ class TC_Daemon < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  test "version number is set properly" do
20
- assert_equal('0.8.3', Daemon::VERSION)
20
+ assert_equal('0.8.4', Daemon::VERSION)
21
21
  end
22
22
 
23
23
  test "constructor basic functionality" do
@@ -52,7 +52,7 @@ class TC_Win32_Service < Test::Unit::TestCase
52
52
  end
53
53
 
54
54
  test "version number is expected value" do
55
- assert_equal('0.8.3', Win32::Service::VERSION)
55
+ assert_equal('0.8.4', Win32::Service::VERSION)
56
56
  end
57
57
 
58
58
  test "services basic functionality" do
@@ -218,6 +218,7 @@ class TC_Win32_Service < Test::Unit::TestCase
218
218
  end
219
219
 
220
220
  test "attempting to start a running service raises an error" do
221
+ start_service(@service_name)
221
222
  assert_raise(SystemCallError){ Win32::Service.start(@service_name) }
222
223
  end
223
224
 
@@ -64,6 +64,11 @@ class TC_Win32_Service_Configure < Test::Unit::TestCase
64
64
  assert_equal('disabled', config_info.start_type)
65
65
  end
66
66
 
67
+ test "service start can be delayed" do
68
+ service_configure(:start_type => Win32::Service::AUTO_START, :delayed_start => true)
69
+ assert_true(full_info.delayed_start)
70
+ end
71
+
67
72
  test "the configure method requires one argument" do
68
73
  assert_raise(ArgumentError){ Win32::Service.configure }
69
74
  end
@@ -162,7 +162,7 @@ class TC_Win32_ServiceInfo_Struct < Test::Unit::TestCase
162
162
 
163
163
  def test_service_info_interactive
164
164
  assert_respond_to(@service_info, :interactive)
165
- assert([true, false].include?(@service_info.interactive))
165
+ assert_boolean(@service_info.interactive)
166
166
  end
167
167
 
168
168
  def test_service_info_service_flags
@@ -170,6 +170,11 @@ class TC_Win32_ServiceInfo_Struct < Test::Unit::TestCase
170
170
  assert([0,1].include?(@service_info.service_flags))
171
171
  end
172
172
 
173
+ def test_service_info_delayed_start
174
+ assert_respond_to(@service_info, :delayed_start)
175
+ assert_boolean(@service_info.delayed_start)
176
+ end
177
+
173
178
  def teardown
174
179
  @types = nil
175
180
  @states = nil
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'win32-service'
5
- spec.version = '0.8.3'
5
+ spec.version = '0.8.4'
6
6
  spec.authors = ['Daniel J. Berger', 'Park Heesob']
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  ]
22
22
 
23
23
  spec.add_dependency('ffi')
24
- spec.add_development_dependency('test-unit', '>= 2.4.0')
24
+ spec.add_development_dependency('test-unit')
25
25
  spec.add_development_dependency('rake')
26
26
 
27
27
  spec.description = <<-EOF
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: win32-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-02 00:00:00.000000000 Z
12
+ date: 2014-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - '>='
33
33
  - !ruby/object:Gem::Version
34
- version: 2.4.0
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '>='
40
40
  - !ruby/object:Gem::Version
41
- version: 2.4.0
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.1.10
115
+ rubygems_version: 2.0.3
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: An interface for MS Windows services