Module: SpannerEmulatorToolkit
- Defined in:
- lib/spanner_emulator_toolkit.rb,
lib/spanner_emulator_toolkit/client.rb,
lib/spanner_emulator_toolkit/version.rb,
lib/spanner_emulator_toolkit/configuration.rb,
lib/spanner_emulator_toolkit/reset_sessions.rb
Defined Under Namespace
Classes: Configuration, Error
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.client ⇒ Object
raises error unless database already exists
9
10
11
12
13
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 9
def client
configuration.validate!
thread_local_client
end
|
.configuration ⇒ Object
13
14
15
|
# File 'lib/spanner_emulator_toolkit.rb', line 13
def configuration
@configuration ||= Configuration.new
end
|
17
18
19
|
# File 'lib/spanner_emulator_toolkit.rb', line 17
def configure
yield(configuration)
end
|
.create_database ⇒ Object
no-op if database already exists
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 62
def create_database
return if database_exists?
create_instance
logger.debug "creating database: #{configuration.database_id}"
instance.create_database(
configuration.database_id,
statements: configuration.schema_statements
).wait_until_done!
end
|
.create_instance ⇒ Object
no-op if instance already exists
45
46
47
48
49
50
51
52
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 45
def create_instance
return if instance_exists?
logger.debug "creating instance: #{configuration.instance_id}"
project.create_instance(
configuration.instance_id, name: configuration.instance_id
).wait_until_done!
end
|
.database ⇒ Object
32
33
34
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 32
def database
instance&.database(configuration.database_id)
end
|
.database_exists? ⇒ Boolean
40
41
42
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 40
def database_exists?
!instance&.database(configuration.database_id).nil?
end
|
.database_path ⇒ Object
81
82
83
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 81
def database_path
client.database.path
end
|
.drop_database ⇒ Object
74
75
76
77
78
79
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 74
def drop_database
return unless database_exists?
logger.debug "dropping database: #{configuration.database_id}"
client.database.drop
end
|
.drop_instance ⇒ Object
54
55
56
57
58
59
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 54
def drop_instance
return unless instance_exists?
logger.debug "dropping instance: #{configuration.instance_id}"
instance.delete
end
|
.instance ⇒ Object
returns nil unless instance already exists
28
29
30
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 28
def instance
project.instance(configuration.instance_id)
end
|
.instance_exists? ⇒ Boolean
36
37
38
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 36
def instance_exists?
!instance.nil?
end
|
.logger ⇒ Object
21
22
23
|
# File 'lib/spanner_emulator_toolkit.rb', line 21
def logger
configuration.logger
end
|
.project ⇒ Object
21
22
23
24
25
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 21
def project
configuration.validate!
thread_local_project
end
|
.reset_client ⇒ Object
Resets the client instance.
16
17
18
19
|
# File 'lib/spanner_emulator_toolkit/client.rb', line 16
def reset_client
@client = nil
self
end
|
.reset_sessions! ⇒ Object
reset all sessions on all databases on all instances for the configured emulator project
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/spanner_emulator_toolkit/reset_sessions.rb', line 8
def reset_sessions!
configuration.validate!
logger.debug "resetting sessions"
project.instances.all do |instance|
logger.debug "instance: #{instance.path}"
instance.databases.all do |database|
logger.debug " database: #{database.path}"
each_session_for_database(database) do |session|
logger.debug " session: #{session.path}"
tx = session.create_empty_transaction
session.rollback tx.transaction_id
rescue => e
logger.debug " error resetting session: #{e.details}"
end
end
end
end
|