taste_tester 0.0.11 → 0.0.12
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 +4 -4
 - data/bin/taste-tester +2 -0
 - data/lib/taste_tester/config.rb +10 -4
 - data/lib/taste_tester/hooks.rb +1 -1
 - data/lib/taste_tester/host.rb +14 -5
 - data/lib/taste_tester/server.rb +30 -15
 - data/lib/taste_tester/state.rb +8 -0
 - data/lib/taste_tester/windows.rb +82 -0
 - metadata +28 -27
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b43e9bbdc0fa2bccc9c0bca3f4c749d6c0b4f356
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 941177bd83e37b1830ca0f24add48768261541e9
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7446d6bef3d9f68860d2747a1a67141dcb3eb9fbbb9751713811afed02da87e192db4b4e473d11433fb908b4eafd14960ef610de052fbd3e8e3c82c5ccb037f2
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: db111fd123f9faff1a37b40f128e2e8a2041b27ad5be234dd62e2cf99bede17218cbbb5450543c1b999f5eed001fce18f1f8150309155e8bf250b208081d2f73
         
     | 
    
        data/bin/taste-tester
    CHANGED
    
    | 
         @@ -123,6 +123,7 @@ MODES: 
     | 
|
| 
       123 
123 
     | 
    
         
             
              end
         
     | 
| 
       124 
124 
     | 
    
         | 
| 
       125 
125 
     | 
    
         
             
              options = { :config_file => TasteTester::Config.config_file }
         
     | 
| 
      
 126 
     | 
    
         
            +
              # rubocop:disable Metrics/BlockLength
         
     | 
| 
       126 
127 
     | 
    
         
             
              parser = OptionParser.new do |opts|
         
     | 
| 
       127 
128 
     | 
    
         
             
                opts.banner = description
         
     | 
| 
       128 
129 
     | 
    
         | 
| 
         @@ -351,6 +352,7 @@ MODES: 
     | 
|
| 
       351 
352 
     | 
    
         
             
                  options[:skip_post_test_hook] = true
         
     | 
| 
       352 
353 
     | 
    
         
             
                end
         
     | 
| 
       353 
354 
     | 
    
         
             
              end
         
     | 
| 
      
 355 
     | 
    
         
            +
              # rubocop:enable Metrics/BlockLength
         
     | 
| 
       354 
356 
     | 
    
         | 
| 
       355 
357 
     | 
    
         
             
              if mode == 'help'
         
     | 
| 
       356 
358 
     | 
    
         
             
                puts parser
         
     | 
    
        data/lib/taste_tester/config.rb
    CHANGED
    
    | 
         @@ -95,8 +95,14 @@ module TasteTester 
     | 
|
| 
       95 
95 
     | 
    
         
             
                end
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
                def self.chef_port
         
     | 
| 
       98 
     | 
    
         
            -
                   
     | 
| 
       99 
     | 
    
         
            -
                   
     | 
| 
      
 98 
     | 
    
         
            +
                  require 'taste_tester/state'
         
     | 
| 
      
 99 
     | 
    
         
            +
                  port_range = (
         
     | 
| 
      
 100 
     | 
    
         
            +
                    chef_port_range.first.to_i..chef_port_range.last.to_i
         
     | 
| 
      
 101 
     | 
    
         
            +
                  ).to_a.shuffle
         
     | 
| 
      
 102 
     | 
    
         
            +
                  if TasteTester::State.port
         
     | 
| 
      
 103 
     | 
    
         
            +
                    port_range.unshift(TasteTester::State.port)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  end
         
     | 
| 
      
 105 
     | 
    
         
            +
                  port_range.each do |port|
         
     | 
| 
       100 
106 
     | 
    
         
             
                    unless port_open?(port)
         
     | 
| 
       101 
107 
     | 
    
         
             
                      return port
         
     | 
| 
       102 
108 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -108,9 +114,9 @@ module TasteTester 
     | 
|
| 
       108 
114 
     | 
    
         | 
| 
       109 
115 
     | 
    
         
             
                def self.testing_end_time
         
     | 
| 
       110 
116 
     | 
    
         
             
                  if TasteTester::Config.testing_until
         
     | 
| 
       111 
     | 
    
         
            -
                    TasteTester::Config.testing_until 
     | 
| 
      
 117 
     | 
    
         
            +
                    TasteTester::Config.testing_until
         
     | 
| 
       112 
118 
     | 
    
         
             
                  else
         
     | 
| 
       113 
     | 
    
         
            -
                     
     | 
| 
      
 119 
     | 
    
         
            +
                    Time.now + TasteTester::Config.testing_time
         
     | 
| 
       114 
120 
     | 
    
         
             
                  end
         
     | 
| 
       115 
121 
     | 
    
         
             
                end
         
     | 
| 
       116 
122 
     | 
    
         
             
              end
         
     | 
    
        data/lib/taste_tester/hooks.rb
    CHANGED
    
    
    
        data/lib/taste_tester/host.rb
    CHANGED
    
    | 
         @@ -98,8 +98,7 @@ module TasteTester 
     | 
|
| 
       98 
98 
     | 
    
         | 
| 
       99 
99 
     | 
    
         
             
                  transport << 'logger -t taste-tester Moving server into taste-tester' +
         
     | 
| 
       100 
100 
     | 
    
         
             
                    " for #{@user}"
         
     | 
| 
       101 
     | 
    
         
            -
                  transport <<  
     | 
| 
       102 
     | 
    
         
            -
                    " #{TasteTester::Config.timestamp_file}"
         
     | 
| 
      
 101 
     | 
    
         
            +
                  transport << touchcmd
         
     | 
| 
       103 
102 
     | 
    
         
             
                  transport << "echo -n '#{@serialized_config}' | base64 --decode" +
         
     | 
| 
       104 
103 
     | 
    
         
             
                    " > #{TasteTester::Config.chef_config_path}/client-taste-tester.rb"
         
     | 
| 
       105 
104 
     | 
    
         
             
                  transport << "rm -vf #{TasteTester::Config.chef_config_path}/" +
         
     | 
| 
         @@ -188,21 +187,31 @@ module TasteTester 
     | 
|
| 
       188 
187 
     | 
    
         | 
| 
       189 
188 
     | 
    
         
             
                def keeptesting
         
     | 
| 
       190 
189 
     | 
    
         
             
                  logger.warn("Renewing taste-tester on #{@name} until" +
         
     | 
| 
       191 
     | 
    
         
            -
                    " #{TasteTester::Config.testing_end_time}")
         
     | 
| 
      
 190 
     | 
    
         
            +
                    " #{TasteTester::Config.testing_end_time.strftime('%y%m%d%H%M.%S')}")
         
     | 
| 
       192 
191 
     | 
    
         
             
                  if TasteTester::Config.use_ssh_tunnels
         
     | 
| 
       193 
192 
     | 
    
         
             
                    TasteTester::Tunnel.kill(@name)
         
     | 
| 
       194 
193 
     | 
    
         
             
                    @tunnel = TasteTester::Tunnel.new(@name, @server)
         
     | 
| 
       195 
194 
     | 
    
         
             
                    @tunnel.run
         
     | 
| 
       196 
195 
     | 
    
         
             
                  else
         
     | 
| 
       197 
196 
     | 
    
         
             
                    transport = get_transport
         
     | 
| 
       198 
     | 
    
         
            -
                    transport <<  
     | 
| 
       199 
     | 
    
         
            -
                      " #{TasteTester::Config.timestamp_file}"
         
     | 
| 
      
 197 
     | 
    
         
            +
                    transport << touchcmd
         
     | 
| 
       200 
198 
     | 
    
         
             
                    transport.run!
         
     | 
| 
       201 
199 
     | 
    
         
             
                  end
         
     | 
| 
       202 
200 
     | 
    
         
             
                end
         
     | 
| 
       203 
201 
     | 
    
         | 
| 
       204 
202 
     | 
    
         
             
                private
         
     | 
| 
       205 
203 
     | 
    
         | 
| 
      
 204 
     | 
    
         
            +
                def touchcmd
         
     | 
| 
      
 205 
     | 
    
         
            +
                  touch = Base64.encode64(
         
     | 
| 
      
 206 
     | 
    
         
            +
                    "if [ 'Darwin' = $(uname) ]; then touch -t \"$(date -r " +
         
     | 
| 
      
 207 
     | 
    
         
            +
                    "#{TasteTester::Config.testing_end_time.to_i} +'%Y%m%d%H%M.%S')\" " +
         
     | 
| 
      
 208 
     | 
    
         
            +
                    "#{TasteTester::Config.timestamp_file}; else touch --date \"$(date " +
         
     | 
| 
      
 209 
     | 
    
         
            +
                    "-d @#{TasteTester::Config.testing_end_time.to_i} +'%Y-%m-%d %T')\" " +
         
     | 
| 
      
 210 
     | 
    
         
            +
                    "#{TasteTester::Config.timestamp_file}; fi",
         
     | 
| 
      
 211 
     | 
    
         
            +
                  ).delete("\n")
         
     | 
| 
      
 212 
     | 
    
         
            +
                  "echo -n '#{touch}' | base64 --decode | bash"
         
     | 
| 
      
 213 
     | 
    
         
            +
                end
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
       206 
215 
     | 
    
         
             
                def config
         
     | 
| 
       207 
216 
     | 
    
         
             
                  scheme = TasteTester::Config.use_ssl ? 'https' : 'http'
         
     | 
| 
       208 
217 
     | 
    
         
             
                  if TasteTester::Config.use_ssh_tunnels
         
     | 
    
        data/lib/taste_tester/server.rb
    CHANGED
    
    | 
         @@ -21,6 +21,7 @@ require 'timeout' 
     | 
|
| 
       21 
21 
     | 
    
         
             
            require 'between_meals/util'
         
     | 
| 
       22 
22 
     | 
    
         
             
            require 'taste_tester/config'
         
     | 
| 
       23 
23 
     | 
    
         
             
            require 'taste_tester/state'
         
     | 
| 
      
 24 
     | 
    
         
            +
            require 'taste_tester/windows'
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
            module TasteTester
         
     | 
| 
       26 
27 
     | 
    
         
             
              # Stateless chef-zero server management
         
     | 
| 
         @@ -152,19 +153,31 @@ module TasteTester 
     | 
|
| 
       152 
153 
     | 
    
         
             
                                  :logging => TasteTester::Config.chef_zero_logging,
         
     | 
| 
       153 
154 
     | 
    
         
             
                                })
         
     | 
| 
       154 
155 
     | 
    
         
             
                  logger.info("Starting chef-zero of port #{@state.port}")
         
     | 
| 
       155 
     | 
    
         
            -
                   
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                     
     | 
| 
       158 
     | 
    
         
            -
                   
     | 
| 
       159 
     | 
    
         
            -
             
     | 
| 
      
 156 
     | 
    
         
            +
                  if windows?
         
     | 
| 
      
 157 
     | 
    
         
            +
                    extend ::TasteTester::Windows
         
     | 
| 
      
 158 
     | 
    
         
            +
                    start_win_chef_zero_server
         
     | 
| 
      
 159 
     | 
    
         
            +
                  else
         
     | 
| 
      
 160 
     | 
    
         
            +
                    cmd = "#{chef_zero_path} --host #{@addr} --port #{@state.port} -d"
         
     | 
| 
      
 161 
     | 
    
         
            +
                    if TasteTester::Config.chef_zero_logging
         
     | 
| 
      
 162 
     | 
    
         
            +
                      cmd << " --log-file #{@log_file}" +
         
     | 
| 
      
 163 
     | 
    
         
            +
                        ' --log-level debug'
         
     | 
| 
      
 164 
     | 
    
         
            +
                    end
         
     | 
| 
      
 165 
     | 
    
         
            +
                    cmd << ' --ssl' if TasteTester::Config.use_ssl
         
     | 
| 
      
 166 
     | 
    
         
            +
                    Mixlib::ShellOut.new(cmd).run_command.error!
         
     | 
| 
      
 167 
     | 
    
         
            +
                  end
         
     | 
| 
       160 
168 
     | 
    
         
             
                end
         
     | 
| 
       161 
169 
     | 
    
         | 
| 
       162 
170 
     | 
    
         
             
                def stop_chef_zero
         
     | 
| 
       163 
     | 
    
         
            -
                   
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
                   
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
      
 171 
     | 
    
         
            +
                  if windows?
         
     | 
| 
      
 172 
     | 
    
         
            +
                    extend ::TasteTester::Windows
         
     | 
| 
      
 173 
     | 
    
         
            +
                    nuke_all_cz_pids
         
     | 
| 
      
 174 
     | 
    
         
            +
                  else
         
     | 
| 
      
 175 
     | 
    
         
            +
                    logger.info('Killing your chef-zero instances')
         
     | 
| 
      
 176 
     | 
    
         
            +
                    s = Mixlib::ShellOut.new("pkill -9 -u #{ENV['USER']} -f bin/chef-zero")
         
     | 
| 
      
 177 
     | 
    
         
            +
                    s.run_command
         
     | 
| 
      
 178 
     | 
    
         
            +
                    # You have to give it a moment to stop or the stat fails
         
     | 
| 
      
 179 
     | 
    
         
            +
                    sleep(1)
         
     | 
| 
      
 180 
     | 
    
         
            +
                  end
         
     | 
| 
       168 
181 
     | 
    
         
             
                end
         
     | 
| 
       169 
182 
     | 
    
         | 
| 
       170 
183 
     | 
    
         
             
                def chef_zero_path
         
     | 
| 
         @@ -172,14 +185,16 @@ module TasteTester 
     | 
|
| 
       172 
185 
     | 
    
         
             
                    return TasteTester::Config.chef_zero_path
         
     | 
| 
       173 
186 
     | 
    
         
             
                  end
         
     | 
| 
       174 
187 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
                  [
         
     | 
| 
       176 
     | 
    
         
            -
                     
     | 
| 
       177 
     | 
    
         
            -
                     
     | 
| 
       178 
     | 
    
         
            -
                  ].each do |path|
         
     | 
| 
       179 
     | 
    
         
            -
                    return path if File.exist?(path)
         
     | 
| 
      
 188 
     | 
    
         
            +
                  ENV['PATH'].split(':').each do |path|
         
     | 
| 
      
 189 
     | 
    
         
            +
                    zero = "#{path}/chef-zero"
         
     | 
| 
      
 190 
     | 
    
         
            +
                    return zero if File.exist?(zero)
         
     | 
| 
       180 
191 
     | 
    
         
             
                  end
         
     | 
| 
       181 
192 
     | 
    
         
             
                  logger.error('chef-zero not found')
         
     | 
| 
       182 
193 
     | 
    
         
             
                  exit(1)
         
     | 
| 
       183 
194 
     | 
    
         
             
                end
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
                def windows?
         
     | 
| 
      
 197 
     | 
    
         
            +
                  Gem.win_platform?
         
     | 
| 
      
 198 
     | 
    
         
            +
                end
         
     | 
| 
       184 
199 
     | 
    
         
             
              end
         
     | 
| 
       185 
200 
     | 
    
         
             
            end
         
     | 
    
        data/lib/taste_tester/state.rb
    CHANGED
    
    | 
         @@ -92,6 +92,14 @@ module TasteTester 
     | 
|
| 
       92 
92 
     | 
    
         
             
                end
         
     | 
| 
       93 
93 
     | 
    
         | 
| 
       94 
94 
     | 
    
         
             
                def wipe
         
     | 
| 
      
 95 
     | 
    
         
            +
                  # Save port between restarts. It might not be free when we restart, but
         
     | 
| 
      
 96 
     | 
    
         
            +
                  # at least we'll try to keep the same
         
     | 
| 
      
 97 
     | 
    
         
            +
                  port = self.port
         
     | 
| 
      
 98 
     | 
    
         
            +
                  real_wipe
         
     | 
| 
      
 99 
     | 
    
         
            +
                  write(:port, port)
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                def real_wipe
         
     | 
| 
       95 
103 
     | 
    
         
             
                  if TasteTester::Config.ref_file &&
         
     | 
| 
       96 
104 
     | 
    
         
             
                     File.exists?(TasteTester::Config.ref_file)
         
     | 
| 
       97 
105 
     | 
    
         
             
                    File.delete(TasteTester::Config.ref_file)
         
     | 
| 
         @@ -0,0 +1,82 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # vim: syntax=ruby:expandtab:shiftwidth=2:softtabstop=2:tabstop=2
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright 2013-present Facebook
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 6 
     | 
    
         
            +
            # you may not use this file except in compliance with the License.
         
     | 
| 
      
 7 
     | 
    
         
            +
            # You may obtain a copy of the License at
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            #     http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 12 
     | 
    
         
            +
            # distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 13 
     | 
    
         
            +
            # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 14 
     | 
    
         
            +
            # See the License for the specific language governing permissions and
         
     | 
| 
      
 15 
     | 
    
         
            +
            # limitations under the License.
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            module TasteTester
         
     | 
| 
      
 18 
     | 
    
         
            +
              module Windows
         
     | 
| 
      
 19 
     | 
    
         
            +
                # We use START to spawn a subprocess of chef-zero since if you were to do
         
     | 
| 
      
 20 
     | 
    
         
            +
                # this directly within a terminal session it will collide with the running
         
     | 
| 
      
 21 
     | 
    
         
            +
                # chef-zero process when the user tries to input commands leading to many
         
     | 
| 
      
 22 
     | 
    
         
            +
                # keystrokes being lost :(
         
     | 
| 
      
 23 
     | 
    
         
            +
                def start_win_chef_zero_server
         
     | 
| 
      
 24 
     | 
    
         
            +
                  # `START` needs quotes around one of the arguments to function correctly.
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # rubocop:disable Lint/PercentStringArray
         
     | 
| 
      
 26 
     | 
    
         
            +
                  cmd = %W{
         
     | 
| 
      
 27 
     | 
    
         
            +
                    START "taste-tester"
         
     | 
| 
      
 28 
     | 
    
         
            +
                    /MIN
         
     | 
| 
      
 29 
     | 
    
         
            +
                    #{TasteTester::Config.chef_zero_path}
         
     | 
| 
      
 30 
     | 
    
         
            +
                    --port #{@state.port}
         
     | 
| 
      
 31 
     | 
    
         
            +
                  }.join(' ')
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # rubocop:enable Lint/PercentStringArray
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  if TasteTester::Config.my_hostname
         
     | 
| 
      
 35 
     | 
    
         
            +
                    cmd << " --host #{TasteTester::Config.my_hostname}"
         
     | 
| 
      
 36 
     | 
    
         
            +
                  else
         
     | 
| 
      
 37 
     | 
    
         
            +
                    cmd << " --host #{@addr}"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if TasteTester::Config.chef_zero_logging
         
     | 
| 
      
 40 
     | 
    
         
            +
                    cmd << " --log-file #{@log_file} --log-level debug"
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  cmd << ' --ssl' if TasteTester::Config.use_ssl
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  # Mixlib::Shellout will always wait for a process to finish before
         
     | 
| 
      
 45 
     | 
    
         
            +
                  # returning, so we use `spawn` instead.
         
     | 
| 
      
 46 
     | 
    
         
            +
                  spawn(cmd)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  sleep(2)
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                # `START` will also create a parent process for `cmd.exe` when `ruby.exe` is
         
     | 
| 
      
 51 
     | 
    
         
            +
                # created, so we also need to make sure that we find those and kill them
         
     | 
| 
      
 52 
     | 
    
         
            +
                # after the ruby process is terminated. Otherwise many orphaned `cmd.exe`
         
     | 
| 
      
 53 
     | 
    
         
            +
                # windows could be left open in the aftermath.
         
     | 
| 
      
 54 
     | 
    
         
            +
                def find_cz_pids
         
     | 
| 
      
 55 
     | 
    
         
            +
                  require 'wmi-lite'
         
     | 
| 
      
 56 
     | 
    
         
            +
                  wmi = WmiLite::Wmi.new
         
     | 
| 
      
 57 
     | 
    
         
            +
                  cz_process_query = %{
         
     | 
| 
      
 58 
     | 
    
         
            +
                    SELECT
         
     | 
| 
      
 59 
     | 
    
         
            +
                      ProcessID,
         
     | 
| 
      
 60 
     | 
    
         
            +
                      ParentProcessID
         
     | 
| 
      
 61 
     | 
    
         
            +
                    FROM
         
     | 
| 
      
 62 
     | 
    
         
            +
                      Win32_Process
         
     | 
| 
      
 63 
     | 
    
         
            +
                    WHERE
         
     | 
| 
      
 64 
     | 
    
         
            +
                      CommandLine LIKE "%chef-zero%"
         
     | 
| 
      
 65 
     | 
    
         
            +
                      AND
         
     | 
| 
      
 66 
     | 
    
         
            +
                      Name = "ruby.exe"
         
     | 
| 
      
 67 
     | 
    
         
            +
                  }
         
     | 
| 
      
 68 
     | 
    
         
            +
                  wmi.query(cz_process_query).map do |process|
         
     | 
| 
      
 69 
     | 
    
         
            +
                    [process['processid'], process['parentprocessid']]
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                # It is possible to have multiple chef-zero processes running which may
         
     | 
| 
      
 74 
     | 
    
         
            +
                # mess up taste-tester's state. So... nuke 'em all.
         
     | 
| 
      
 75 
     | 
    
         
            +
                def nuke_all_cz_pids
         
     | 
| 
      
 76 
     | 
    
         
            +
                  find_cz_pids.each do |pid, parentpid|
         
     | 
| 
      
 77 
     | 
    
         
            +
                    ::Mixlib::ShellOut.new("taskkill /F /PID #{pid}").run_command
         
     | 
| 
      
 78 
     | 
    
         
            +
                    ::Mixlib::ShellOut.new("taskkill /F /PID #{parentpid}").run_command
         
     | 
| 
      
 79 
     | 
    
         
            +
                  end
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: taste_tester
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.12
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Phil Dibowitz
         
     | 
| 
         @@ -9,90 +9,90 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2016-12-21 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: between_meals
         
     | 
| 
       16 
16 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                requirements:
         
     | 
| 
       18 
     | 
    
         
            -
                - -  
     | 
| 
      
 18 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       19 
19 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       20 
20 
     | 
    
         
             
                    version: 0.0.6
         
     | 
| 
       21 
21 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       22 
22 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       23 
23 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       24 
24 
     | 
    
         
             
                requirements:
         
     | 
| 
       25 
     | 
    
         
            -
                - -  
     | 
| 
      
 25 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       26 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       27 
27 
     | 
    
         
             
                    version: 0.0.6
         
     | 
| 
       28 
28 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       29 
29 
     | 
    
         
             
              name: mixlib-config
         
     | 
| 
       30 
30 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       31 
31 
     | 
    
         
             
                requirements:
         
     | 
| 
       32 
     | 
    
         
            -
                - -  
     | 
| 
      
 32 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       33 
33 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       34 
34 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       35 
35 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       36 
36 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       37 
37 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       38 
38 
     | 
    
         
             
                requirements:
         
     | 
| 
       39 
     | 
    
         
            -
                - -  
     | 
| 
      
 39 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       40 
40 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       41 
41 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       42 
42 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       43 
43 
     | 
    
         
             
              name: colorize
         
     | 
| 
       44 
44 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       45 
45 
     | 
    
         
             
                requirements:
         
     | 
| 
       46 
     | 
    
         
            -
                - -  
     | 
| 
      
 46 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       47 
47 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       48 
48 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       49 
49 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       50 
50 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       51 
51 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       52 
52 
     | 
    
         
             
                requirements:
         
     | 
| 
       53 
     | 
    
         
            -
                - -  
     | 
| 
      
 53 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       54 
54 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       55 
55 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       56 
56 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       57 
57 
     | 
    
         
             
              name: rubocop
         
     | 
| 
       58 
58 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       59 
59 
     | 
    
         
             
                requirements:
         
     | 
| 
       60 
     | 
    
         
            -
                - -  
     | 
| 
      
 60 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       61 
61 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       62 
62 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       63 
63 
     | 
    
         
             
              type: :development
         
     | 
| 
       64 
64 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       65 
65 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       66 
66 
     | 
    
         
             
                requirements:
         
     | 
| 
       67 
     | 
    
         
            -
                - -  
     | 
| 
      
 67 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       68 
68 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       69 
69 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       70 
70 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       71 
71 
     | 
    
         
             
              name: chef-zero
         
     | 
| 
       72 
72 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
73 
     | 
    
         
             
                requirements:
         
     | 
| 
       74 
     | 
    
         
            -
                - -  
     | 
| 
      
 74 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       75 
75 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       76 
76 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       77 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
78 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       79 
79 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       80 
80 
     | 
    
         
             
                requirements:
         
     | 
| 
       81 
     | 
    
         
            -
                - -  
     | 
| 
      
 81 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       82 
82 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       83 
83 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       84 
84 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       85 
85 
     | 
    
         
             
              name: knife-solo
         
     | 
| 
       86 
86 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       87 
87 
     | 
    
         
             
                requirements:
         
     | 
| 
       88 
     | 
    
         
            -
                - -  
     | 
| 
      
 88 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       89 
89 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       90 
90 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       91 
91 
     | 
    
         
             
              type: :development
         
     | 
| 
       92 
92 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       93 
93 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       94 
94 
     | 
    
         
             
                requirements:
         
     | 
| 
       95 
     | 
    
         
            -
                - -  
     | 
| 
      
 95 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       96 
96 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       97 
97 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       98 
98 
     | 
    
         
             
            description: Utility for testing Chef changes using chef-zero
         
     | 
| 
         @@ -104,21 +104,22 @@ extra_rdoc_files: 
     | 
|
| 
       104 
104 
     | 
    
         
             
            - README.md
         
     | 
| 
       105 
105 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       106 
106 
     | 
    
         
             
            files:
         
     | 
| 
       107 
     | 
    
         
            -
            - README.md
         
     | 
| 
       108 
107 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       109 
     | 
    
         
            -
            -  
     | 
| 
       110 
     | 
    
         
            -
            -  
     | 
| 
       111 
     | 
    
         
            -
            - lib/taste_tester/ 
     | 
| 
      
 108 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 109 
     | 
    
         
            +
            - bin/taste-tester
         
     | 
| 
      
 110 
     | 
    
         
            +
            - lib/taste_tester/client.rb
         
     | 
| 
       112 
111 
     | 
    
         
             
            - lib/taste_tester/commands.rb
         
     | 
| 
       113 
     | 
    
         
            -
            - lib/taste_tester/host.rb
         
     | 
| 
       114 
112 
     | 
    
         
             
            - lib/taste_tester/config.rb
         
     | 
| 
       115 
     | 
    
         
            -
            - lib/taste_tester/locallink.rb
         
     | 
| 
       116 
     | 
    
         
            -
            - lib/taste_tester/client.rb
         
     | 
| 
       117 
     | 
    
         
            -
            - lib/taste_tester/hooks.rb
         
     | 
| 
       118 
113 
     | 
    
         
             
            - lib/taste_tester/exceptions.rb
         
     | 
| 
       119 
     | 
    
         
            -
            - lib/taste_tester/ 
     | 
| 
      
 114 
     | 
    
         
            +
            - lib/taste_tester/hooks.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - lib/taste_tester/host.rb
         
     | 
| 
      
 116 
     | 
    
         
            +
            - lib/taste_tester/locallink.rb
         
     | 
| 
      
 117 
     | 
    
         
            +
            - lib/taste_tester/logging.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - lib/taste_tester/server.rb
         
     | 
| 
       120 
119 
     | 
    
         
             
            - lib/taste_tester/ssh.rb
         
     | 
| 
       121 
     | 
    
         
            -
            -  
     | 
| 
      
 120 
     | 
    
         
            +
            - lib/taste_tester/state.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - lib/taste_tester/tunnel.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - lib/taste_tester/windows.rb
         
     | 
| 
       122 
123 
     | 
    
         
             
            - scripts/taste-untester
         
     | 
| 
       123 
124 
     | 
    
         
             
            homepage: https://github.com/facebook/taste-tester
         
     | 
| 
       124 
125 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -130,17 +131,17 @@ require_paths: 
     | 
|
| 
       130 
131 
     | 
    
         
             
            - lib
         
     | 
| 
       131 
132 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       132 
133 
     | 
    
         
             
              requirements:
         
     | 
| 
       133 
     | 
    
         
            -
              - -  
     | 
| 
      
 134 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       134 
135 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       135 
136 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       136 
137 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       137 
138 
     | 
    
         
             
              requirements:
         
     | 
| 
       138 
     | 
    
         
            -
              - -  
     | 
| 
      
 139 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       139 
140 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       140 
141 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       141 
142 
     | 
    
         
             
            requirements: []
         
     | 
| 
       142 
143 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       143 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 144 
     | 
    
         
            +
            rubygems_version: 2.5.1
         
     | 
| 
       144 
145 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       145 
146 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       146 
147 
     | 
    
         
             
            summary: Taste Tester
         
     |