module DatabaseStalker

Constants

DEFAULT_LOG_FILE
DEFAULT_STALKING_LOG_FILE
DEFAULT_STALKING_LOG_PER_TEST_FILE
DEFAULT_STALKING_LOG_PER_TEST_TEMPORARY_FILE
DEFAULT_TABLE_LOG_FILE
VERSION

Public Class Methods

notify_table_deletion() click to toggle source
# File lib/database_stalker.rb, line 80
def notify_table_deletion
  File.open(@stalking_log_per_test_temporary, 'a') do |file|
    appended_log = @log_stalker.result
    appended_log.each do |line|
      file.puts("#{line}")
    end
  end
end
set_up( test_log: DEFAULT_LOG_FILE, table_log: DEFAULT_TABLE_LOG_FILE, stalking_log: DEFAULT_STALKING_LOG_FILE, stalking_log_per_test: DEFAULT_STALKING_LOG_PER_TEST_FILE, stalking_log_per_test_temporary: DEFAULT_STALKING_LOG_PER_TEST_TEMPORARY_FILE) click to toggle source
# File lib/database_stalker.rb, line 15
def set_up(
  test_log: DEFAULT_LOG_FILE,
  table_log: DEFAULT_TABLE_LOG_FILE,
  stalking_log: DEFAULT_STALKING_LOG_FILE,
  stalking_log_per_test: DEFAULT_STALKING_LOG_PER_TEST_FILE,
  stalking_log_per_test_temporary: DEFAULT_STALKING_LOG_PER_TEST_TEMPORARY_FILE)
  @test_log = test_log
  @table_log = table_log
  @stalking_log = stalking_log
  @stalking_log_per_test = stalking_log_per_test
  @stalking_log_per_test_temporary = stalking_log_per_test_temporary
  File.delete(@stalking_log_per_test_temporary) if File.exist?(@stalking_log_per_test_temporary)
  FileUtils.touch(@stalking_log_per_test_temporary)
end
stalk() click to toggle source
# File lib/database_stalker.rb, line 30
def stalk
  fork do
    log_stalker = LogStalker.new(@test_log, @stalking_log)
    log_stalker.run
    watch_test_process
    log_stalker.stop
    used_log = []
    File.open(@stalking_log_per_test_temporary, 'r') do |f|
      f.each_line do |line|
        used_log << line
      end
    end
    all_log = log_stalker.result
    parser = Parser.new(all_log.slice(used_log.size .. all_log.size - 1))
    File.open(@table_log, 'w') do |file|
      parser.table_names.each do |table_name|
        file.write("#{table_name}\n")
      end
    end
  end
  wait_for_log_stalker
end
stalk_per_test() click to toggle source
# File lib/database_stalker.rb, line 68
def stalk_per_test
  @log_stalker = LogStalker.new(@test_log, @stalking_log_per_test)
  @log_stalker.run
end
table_names() click to toggle source
# File lib/database_stalker.rb, line 57
def table_names
  return [] if not File.exists?(@table_log)
  result = []
  File.open(@table_log, 'r') do |f|
    f.each_line do |line|
      result << line.strip
    end
  end
  result
end
table_names_per_test() click to toggle source
# File lib/database_stalker.rb, line 73
def table_names_per_test
  @log_stalker.stop
  appended_log = @log_stalker.result
  parser = Parser.new(appended_log)
  parser.table_names
end

Private Class Methods

wait_for_log_stalker() click to toggle source
# File lib/database_stalker.rb, line 53
def wait_for_log_stalker
  sleep(0.1)
end
watch_test_process() click to toggle source
# File lib/database_stalker.rb, line 89
def watch_test_process
  while true
    return if Process.ppid == 1
  end
end