Module: DatabaseStalker

Defined in:
lib/database_stalker.rb,
lib/database_stalker/version.rb,
lib/database_stalker/log_stalker.rb

Defined Under Namespace

Modules: Util Classes: LogStalker, Parser

Constant Summary collapse

DEFAULT_LOG_FILE =
'log/test.log'
DEFAULT_TABLE_LOG_FILE =
'log/table_names.log'
DEFAULT_STALKING_LOG_FILE =
'log/stalking_log.log'
DEFAULT_STALKING_LOG_PER_TEST_FILE =
'log/stalking_log_per_test.log'
DEFAULT_STALKING_LOG_PER_TEST_TEMPORARY_FILE =
'log/stalking_log_per_test_temporary.log'
VERSION =
"0.1.3"

Class Method Summary collapse

Class Method Details

.notify_table_deletionObject



79
80
81
82
83
84
85
86
# File 'lib/database_stalker.rb', line 79

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) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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

.stalkObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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_testObject



67
68
69
70
# File 'lib/database_stalker.rb', line 67

def stalk_per_test
  @log_stalker = LogStalker.new(@test_log, @stalking_log_per_test)
  @log_stalker.run
end

.table_namesObject



57
58
59
60
61
62
63
64
65
# File 'lib/database_stalker.rb', line 57

def table_names
  result = []
  File.open(@table_log, 'r') do |f|
    f.each_line do |line|
      result << line.strip
    end
  end
  result
end

.table_names_per_testObject



72
73
74
75
76
77
# File 'lib/database_stalker.rb', line 72

def table_names_per_test
  @log_stalker.stop
  appended_log = @log_stalker.result
  parser = Parser.new(appended_log)
  parser.table_names
end