ventriloquist 0.0.1 → 0.1.0

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +3 -0
  5. data/Gemfile +16 -0
  6. data/Gemfile.lock +118 -0
  7. data/Guardfile +5 -0
  8. data/LICENSE.txt +1 -1
  9. data/README.md +191 -9
  10. data/Rakefile +2 -0
  11. data/development/Vagrantfile +50 -0
  12. data/lib/ventriloquist/cap/debian/git_install.rb +18 -0
  13. data/lib/ventriloquist/cap/debian/go_install.rb +34 -0
  14. data/lib/ventriloquist/cap/debian/install_build_tools.rb +18 -0
  15. data/lib/ventriloquist/cap/debian/mercurial_install.rb +18 -0
  16. data/lib/ventriloquist/cap/debian/mysql_install_client.rb +18 -0
  17. data/lib/ventriloquist/cap/debian/mysql_install_headers.rb +18 -0
  18. data/lib/ventriloquist/cap/debian/nodejs_install.rb +21 -0
  19. data/lib/ventriloquist/cap/debian/pg_install_client.rb +18 -0
  20. data/lib/ventriloquist/cap/debian/pg_install_headers.rb +18 -0
  21. data/lib/ventriloquist/cap/debian/phantomjs_install.rb +24 -0
  22. data/lib/ventriloquist/cap/debian/ventriloquist_containers_upstart.rb +33 -0
  23. data/lib/ventriloquist/cap/linux/download.rb +26 -0
  24. data/lib/ventriloquist/cap/linux/make.rb +14 -0
  25. data/lib/ventriloquist/cap/linux/mysql_configure_client.rb +18 -0
  26. data/lib/ventriloquist/cap/linux/pg_export_pghost.rb +18 -0
  27. data/lib/ventriloquist/cap/linux/rvm_install.rb +17 -0
  28. data/lib/ventriloquist/cap/linux/rvm_install_ruby.rb +18 -0
  29. data/lib/ventriloquist/cap/linux/untar.rb +14 -0
  30. data/lib/ventriloquist/config.rb +12 -0
  31. data/lib/ventriloquist/errors.rb +8 -0
  32. data/lib/ventriloquist/platform.rb +11 -0
  33. data/lib/ventriloquist/platforms/go.rb +13 -0
  34. data/lib/ventriloquist/platforms/nodejs.rb +11 -0
  35. data/lib/ventriloquist/platforms/phantomjs.rb +12 -0
  36. data/lib/ventriloquist/platforms/ruby.rb +15 -0
  37. data/lib/ventriloquist/platforms_builder.rb +56 -0
  38. data/lib/ventriloquist/plugin.rb +119 -0
  39. data/lib/ventriloquist/provisioner.rb +59 -0
  40. data/lib/ventriloquist/service.rb +23 -0
  41. data/lib/ventriloquist/services/mysql.rb +39 -0
  42. data/lib/ventriloquist/services/postgresql.rb +39 -0
  43. data/lib/ventriloquist/services/redis.rb +31 -0
  44. data/lib/ventriloquist/services_builder.rb +66 -0
  45. data/lib/ventriloquist/version.rb +4 -2
  46. data/lib/ventriloquist.rb +1 -5
  47. data/locales/en.yml +1 -0
  48. data/services/base/Dockerfile +15 -0
  49. data/services/build-all.sh +20 -0
  50. data/services/elasticsearch/Dockerfile +12 -0
  51. data/services/memcached/Dockerfile +17 -0
  52. data/services/mysql/Dockerfile +20 -0
  53. data/services/mysql/config/bin/add-mysql-user +19 -0
  54. data/services/openjdk7/Dockerfile +9 -0
  55. data/services/postgresql/9.1/Dockerfile +20 -0
  56. data/services/postgresql/9.1/config/bin/prepare-postgres +27 -0
  57. data/services/postgresql/9.1/config/bin/start-postgres +6 -0
  58. data/services/postgresql/9.1/config/etc/postgresql/9.1/main/pg_hba.conf +3 -0
  59. data/services/postgresql/9.2/Dockerfile +15 -0
  60. data/services/postgresql/9.2/config/bin/prepare-postgres +25 -0
  61. data/services/postgresql/9.2/config/bin/start-postgres +6 -0
  62. data/services/postgresql/9.2/config/etc/postgresql/9.2/main/postgresql.conf +573 -0
  63. data/services/redis/Dockerfile +11 -0
  64. data/spec/spec_helper.rb +26 -0
  65. data/spec/unit/platforms_builder_spec.rb +50 -0
  66. data/spec/unit/service_spec.rb +38 -0
  67. data/spec/unit/services_builder_spec.rb +54 -0
  68. data/tasks/spec.rake +9 -0
  69. data/ventriloquist.gemspec +16 -13
  70. metadata +88 -9
@@ -0,0 +1,573 @@
1
+ # -----------------------------
2
+ # PostgreSQL configuration file
3
+ # -----------------------------
4
+ #
5
+ # This file consists of lines of the form:
6
+ #
7
+ # name = value
8
+ #
9
+ # (The "=" is optional.) Whitespace may be used. Comments are introduced with
10
+ # "#" anywhere on a line. The complete list of parameter names and allowed
11
+ # values can be found in the PostgreSQL documentation.
12
+ #
13
+ # The commented-out settings shown in this file represent the default values.
14
+ # Re-commenting a setting is NOT sufficient to revert it to the default value;
15
+ # you need to reload the server.
16
+ #
17
+ # This file is read on server startup and when the server receives a SIGHUP
18
+ # signal. If you edit the file on a running system, you have to SIGHUP the
19
+ # server for the changes to take effect, or use "pg_ctl reload". Some
20
+ # parameters, which are marked below, require a server shutdown and restart to
21
+ # take effect.
22
+ #
23
+ # Any parameter can also be given as a command-line option to the server, e.g.,
24
+ # "postgres -c log_connections=on". Some parameters can be changed at run time
25
+ # with the "SET" SQL command.
26
+ #
27
+ # Memory units: kB = kilobytes Time units: ms = milliseconds
28
+ # MB = megabytes s = seconds
29
+ # GB = gigabytes min = minutes
30
+ # h = hours
31
+ # d = days
32
+
33
+
34
+ #------------------------------------------------------------------------------
35
+ # FILE LOCATIONS
36
+ #------------------------------------------------------------------------------
37
+
38
+ # The default values of these variables are driven from the -D command-line
39
+ # option or PGDATA environment variable, represented here as ConfigDir.
40
+
41
+ data_directory = '/var/lib/postgresql/9.2/main' # use data in another directory
42
+ # (change requires restart)
43
+ hba_file = '/etc/postgresql/9.2/main/pg_hba.conf' # host-based authentication file
44
+ # (change requires restart)
45
+ ident_file = '/etc/postgresql/9.2/main/pg_ident.conf' # ident configuration file
46
+ # (change requires restart)
47
+
48
+ # If external_pid_file is not explicitly set, no extra PID file is written.
49
+ external_pid_file = '/var/run/postgresql/9.2-main.pid' # write an extra PID file
50
+ # (change requires restart)
51
+
52
+
53
+ #------------------------------------------------------------------------------
54
+ # CONNECTIONS AND AUTHENTICATION
55
+ #------------------------------------------------------------------------------
56
+
57
+ # - Connection Settings -
58
+
59
+ listen_addresses = '*' # what IP address(es) to listen on;
60
+ # comma-separated list of addresses;
61
+ # defaults to 'localhost'; use '*' for all
62
+ # (change requires restart)
63
+ port = 5432 # (change requires restart)
64
+ max_connections = 100 # (change requires restart)
65
+ # Note: Increasing max_connections costs ~400 bytes of shared memory per
66
+ # connection slot, plus lock space (see max_locks_per_transaction).
67
+ #superuser_reserved_connections = 3 # (change requires restart)
68
+ unix_socket_directory = '/var/run/postgresql' # (change requires restart)
69
+ #unix_socket_group = '' # (change requires restart)
70
+ #unix_socket_permissions = 0777 # begin with 0 to use octal notation
71
+ # (change requires restart)
72
+ #bonjour = off # advertise server via Bonjour
73
+ # (change requires restart)
74
+ #bonjour_name = '' # defaults to the computer name
75
+ # (change requires restart)
76
+
77
+ # - Security and Authentication -
78
+
79
+ #authentication_timeout = 1min # 1s-600s
80
+ ssl = false # (change requires restart)
81
+ #ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' # allowed SSL ciphers
82
+ # (change requires restart)
83
+ #ssl_renegotiation_limit = 512MB # amount of data between renegotiations
84
+ ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem' # (change requires restart)
85
+ ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key' # (change requires restart)
86
+ #ssl_ca_file = '' # (change requires restart)
87
+ #ssl_crl_file = '' # (change requires restart)
88
+ #password_encryption = on
89
+ #db_user_namespace = off
90
+
91
+ # Kerberos and GSSAPI
92
+ #krb_server_keyfile = ''
93
+ #krb_srvname = 'postgres' # (Kerberos only)
94
+ #krb_caseins_users = off
95
+
96
+ # - TCP Keepalives -
97
+ # see "man 7 tcp" for details
98
+
99
+ #tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
100
+ # 0 selects the system default
101
+ #tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
102
+ # 0 selects the system default
103
+ #tcp_keepalives_count = 0 # TCP_KEEPCNT;
104
+ # 0 selects the system default
105
+
106
+
107
+ #------------------------------------------------------------------------------
108
+ # RESOURCE USAGE (except WAL)
109
+ #------------------------------------------------------------------------------
110
+
111
+ # - Memory -
112
+
113
+ shared_buffers = 24MB # min 128kB
114
+ # (change requires restart)
115
+ #temp_buffers = 8MB # min 800kB
116
+ #max_prepared_transactions = 0 # zero disables the feature
117
+ # (change requires restart)
118
+ # Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
119
+ # per transaction slot, plus lock space (see max_locks_per_transaction).
120
+ # It is not advisable to set max_prepared_transactions nonzero unless you
121
+ # actively intend to use prepared transactions.
122
+ #work_mem = 1MB # min 64kB
123
+ #maintenance_work_mem = 16MB # min 1MB
124
+ #max_stack_depth = 2MB # min 100kB
125
+
126
+ # - Disk -
127
+
128
+ #temp_file_limit = -1 # limits per-session temp file space
129
+ # in kB, or -1 for no limit
130
+
131
+ # - Kernel Resource Usage -
132
+
133
+ #max_files_per_process = 1000 # min 25
134
+ # (change requires restart)
135
+ #shared_preload_libraries = '' # (change requires restart)
136
+
137
+ # - Cost-Based Vacuum Delay -
138
+
139
+ #vacuum_cost_delay = 0ms # 0-100 milliseconds
140
+ #vacuum_cost_page_hit = 1 # 0-10000 credits
141
+ #vacuum_cost_page_miss = 10 # 0-10000 credits
142
+ #vacuum_cost_page_dirty = 20 # 0-10000 credits
143
+ #vacuum_cost_limit = 200 # 1-10000 credits
144
+
145
+ # - Background Writer -
146
+
147
+ #bgwriter_delay = 200ms # 10-10000ms between rounds
148
+ #bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
149
+ #bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
150
+
151
+ # - Asynchronous Behavior -
152
+
153
+ #effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
154
+
155
+
156
+ #------------------------------------------------------------------------------
157
+ # WRITE AHEAD LOG
158
+ #------------------------------------------------------------------------------
159
+
160
+ # - Settings -
161
+
162
+ #wal_level = minimal # minimal, archive, or hot_standby
163
+ # (change requires restart)
164
+ fsync = off # turns forced synchronization on or off
165
+ synchronous_commit = off # synchronization level;
166
+ # off, local, remote_write, or on
167
+ #wal_sync_method = fsync # the default is the first option
168
+ # supported by the operating system:
169
+ # open_datasync
170
+ # fdatasync (default on Linux)
171
+ # fsync
172
+ # fsync_writethrough
173
+ # open_sync
174
+ #full_page_writes = on # recover from partial page writes
175
+ #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
176
+ # (change requires restart)
177
+ #wal_writer_delay = 200ms # 1-10000 milliseconds
178
+
179
+ #commit_delay = 0 # range 0-100000, in microseconds
180
+ #commit_siblings = 5 # range 1-1000
181
+
182
+ # - Checkpoints -
183
+
184
+ #checkpoint_segments = 3 # in logfile segments, min 1, 16MB each
185
+ #checkpoint_timeout = 5min # range 30s-1h
186
+ #checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0
187
+ #checkpoint_warning = 30s # 0 disables
188
+
189
+ # - Archiving -
190
+
191
+ #archive_mode = off # allows archiving to be done
192
+ # (change requires restart)
193
+ #archive_command = '' # command to use to archive a logfile segment
194
+ # placeholders: %p = path of file to archive
195
+ # %f = file name only
196
+ # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
197
+ #archive_timeout = 0 # force a logfile segment switch after this
198
+ # number of seconds; 0 disables
199
+
200
+
201
+ #------------------------------------------------------------------------------
202
+ # REPLICATION
203
+ #------------------------------------------------------------------------------
204
+
205
+ # - Sending Server(s) -
206
+
207
+ # Set these on the master and on any standby that will send replication data.
208
+
209
+ #max_wal_senders = 0 # max number of walsender processes
210
+ # (change requires restart)
211
+ #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
212
+ #replication_timeout = 60s # in milliseconds; 0 disables
213
+
214
+ # - Master Server -
215
+
216
+ # These settings are ignored on a standby server.
217
+
218
+ #synchronous_standby_names = '' # standby servers that provide sync rep
219
+ # comma-separated list of application_name
220
+ # from standby(s); '*' = all
221
+ #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
222
+
223
+ # - Standby Servers -
224
+
225
+ # These settings are ignored on a master server.
226
+
227
+ #hot_standby = off # "on" allows queries during recovery
228
+ # (change requires restart)
229
+ #max_standby_archive_delay = 30s # max delay before canceling queries
230
+ # when reading WAL from archive;
231
+ # -1 allows indefinite delay
232
+ #max_standby_streaming_delay = 30s # max delay before canceling queries
233
+ # when reading streaming WAL;
234
+ # -1 allows indefinite delay
235
+ #wal_receiver_status_interval = 10s # send replies at least this often
236
+ # 0 disables
237
+ #hot_standby_feedback = off # send info from standby to prevent
238
+ # query conflicts
239
+
240
+
241
+ #------------------------------------------------------------------------------
242
+ # QUERY TUNING
243
+ #------------------------------------------------------------------------------
244
+
245
+ # - Planner Method Configuration -
246
+
247
+ #enable_bitmapscan = on
248
+ #enable_hashagg = on
249
+ #enable_hashjoin = on
250
+ #enable_indexscan = on
251
+ #enable_indexonlyscan = on
252
+ #enable_material = on
253
+ #enable_mergejoin = on
254
+ #enable_nestloop = on
255
+ #enable_seqscan = on
256
+ #enable_sort = on
257
+ #enable_tidscan = on
258
+
259
+ # - Planner Cost Constants -
260
+
261
+ #seq_page_cost = 1.0 # measured on an arbitrary scale
262
+ #random_page_cost = 4.0 # same scale as above
263
+ #cpu_tuple_cost = 0.01 # same scale as above
264
+ #cpu_index_tuple_cost = 0.005 # same scale as above
265
+ #cpu_operator_cost = 0.0025 # same scale as above
266
+ #effective_cache_size = 128MB
267
+
268
+ # - Genetic Query Optimizer -
269
+
270
+ #geqo = on
271
+ #geqo_threshold = 12
272
+ #geqo_effort = 5 # range 1-10
273
+ #geqo_pool_size = 0 # selects default based on effort
274
+ #geqo_generations = 0 # selects default based on effort
275
+ #geqo_selection_bias = 2.0 # range 1.5-2.0
276
+ #geqo_seed = 0.0 # range 0.0-1.0
277
+
278
+ # - Other Planner Options -
279
+
280
+ #default_statistics_target = 100 # range 1-10000
281
+ #constraint_exclusion = partition # on, off, or partition
282
+ #cursor_tuple_fraction = 0.1 # range 0.0-1.0
283
+ #from_collapse_limit = 8
284
+ #join_collapse_limit = 8 # 1 disables collapsing of explicit
285
+ # JOIN clauses
286
+
287
+
288
+ #------------------------------------------------------------------------------
289
+ # ERROR REPORTING AND LOGGING
290
+ #------------------------------------------------------------------------------
291
+
292
+ # - Where to Log -
293
+
294
+ log_destination = 'stderr' # Valid values are combinations of
295
+ # stderr, csvlog, syslog, and eventlog,
296
+ # depending on platform. csvlog
297
+ # requires logging_collector to be on.
298
+
299
+ # This is used when logging to stderr:
300
+ #logging_collector = off # Enable capturing of stderr and csvlog
301
+ # into log files. Required to be on for
302
+ # csvlogs.
303
+ # (change requires restart)
304
+
305
+ # These are only used if logging_collector is on:
306
+ #log_directory = 'pg_log' # directory where log files are written,
307
+ # can be absolute or relative to PGDATA
308
+ #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
309
+ # can include strftime() escapes
310
+ #log_file_mode = 0600 # creation mode for log files,
311
+ # begin with 0 to use octal notation
312
+ #log_truncate_on_rotation = off # If on, an existing log file with the
313
+ # same name as the new log file will be
314
+ # truncated rather than appended to.
315
+ # But such truncation only occurs on
316
+ # time-driven rotation, not on restarts
317
+ # or size-driven rotation. Default is
318
+ # off, meaning append to existing files
319
+ # in all cases.
320
+ #log_rotation_age = 1d # Automatic rotation of logfiles will
321
+ # happen after that time. 0 disables.
322
+ #log_rotation_size = 10MB # Automatic rotation of logfiles will
323
+ # happen after that much log output.
324
+ # 0 disables.
325
+
326
+ # These are relevant when logging to syslog:
327
+ #syslog_facility = 'LOCAL0'
328
+ #syslog_ident = 'postgres'
329
+
330
+ # This is only relevant when logging to eventlog (win32):
331
+ #event_source = 'PostgreSQL'
332
+
333
+ # - When to Log -
334
+
335
+ #client_min_messages = notice # values in order of decreasing detail:
336
+ # debug5
337
+ # debug4
338
+ # debug3
339
+ # debug2
340
+ # debug1
341
+ # log
342
+ # notice
343
+ # warning
344
+ # error
345
+
346
+ #log_min_messages = warning # values in order of decreasing detail:
347
+ # debug5
348
+ # debug4
349
+ # debug3
350
+ # debug2
351
+ # debug1
352
+ # info
353
+ # notice
354
+ # warning
355
+ # error
356
+ # log
357
+ # fatal
358
+ # panic
359
+
360
+ #log_min_error_statement = error # values in order of decreasing detail:
361
+ # debug5
362
+ # debug4
363
+ # debug3
364
+ # debug2
365
+ # debug1
366
+ # info
367
+ # notice
368
+ # warning
369
+ # error
370
+ # log
371
+ # fatal
372
+ # panic (effectively off)
373
+
374
+ #log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
375
+ # and their durations, > 0 logs only
376
+ # statements running at least this number
377
+ # of milliseconds
378
+
379
+
380
+ # - What to Log -
381
+
382
+ #debug_print_parse = off
383
+ #debug_print_rewritten = off
384
+ #debug_print_plan = off
385
+ #debug_pretty_print = on
386
+ #log_checkpoints = off
387
+ log_connections = on
388
+ log_disconnections = on
389
+ log_duration = on
390
+ #log_error_verbosity = default # terse, default, or verbose messages
391
+ #log_hostname = off
392
+ log_line_prefix = '%t ' # special values:
393
+ # %a = application name
394
+ # %u = user name
395
+ # %d = database name
396
+ # %r = remote host and port
397
+ # %h = remote host
398
+ # %p = process ID
399
+ # %t = timestamp without milliseconds
400
+ # %m = timestamp with milliseconds
401
+ # %i = command tag
402
+ # %e = SQL state
403
+ # %c = session ID
404
+ # %l = session line number
405
+ # %s = session start timestamp
406
+ # %v = virtual transaction ID
407
+ # %x = transaction ID (0 if none)
408
+ # %q = stop here in non-session
409
+ # processes
410
+ # %% = '%'
411
+ # e.g. '<%u%%%d> '
412
+ #log_lock_waits = off # log lock waits >= deadlock_timeout
413
+ log_statement = 'all' # none, ddl, mod, all
414
+ #log_temp_files = -1 # log temporary files equal or larger
415
+ # than the specified size in kilobytes;
416
+ # -1 disables, 0 logs all temp files
417
+ log_timezone = 'UTC'
418
+
419
+
420
+ #------------------------------------------------------------------------------
421
+ # RUNTIME STATISTICS
422
+ #------------------------------------------------------------------------------
423
+
424
+ # - Query/Index Statistics Collector -
425
+
426
+ #track_activities = on
427
+ #track_counts = on
428
+ #track_io_timing = off
429
+ #track_functions = none # none, pl, all
430
+ #track_activity_query_size = 1024 # (change requires restart)
431
+ #update_process_title = on
432
+ #stats_temp_directory = 'pg_stat_tmp'
433
+
434
+
435
+ # - Statistics Monitoring -
436
+
437
+ #log_parser_stats = off
438
+ #log_planner_stats = off
439
+ #log_executor_stats = off
440
+ #log_statement_stats = off
441
+
442
+
443
+ #------------------------------------------------------------------------------
444
+ # AUTOVACUUM PARAMETERS
445
+ #------------------------------------------------------------------------------
446
+
447
+ #autovacuum = on # Enable autovacuum subprocess? 'on'
448
+ # requires track_counts to also be on.
449
+ #log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
450
+ # their durations, > 0 logs only
451
+ # actions running at least this number
452
+ # of milliseconds.
453
+ #autovacuum_max_workers = 3 # max number of autovacuum subprocesses
454
+ # (change requires restart)
455
+ #autovacuum_naptime = 1min # time between autovacuum runs
456
+ #autovacuum_vacuum_threshold = 50 # min number of row updates before
457
+ # vacuum
458
+ #autovacuum_analyze_threshold = 50 # min number of row updates before
459
+ # analyze
460
+ #autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
461
+ #autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
462
+ #autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
463
+ # (change requires restart)
464
+ #autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
465
+ # autovacuum, in milliseconds;
466
+ # -1 means use vacuum_cost_delay
467
+ #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
468
+ # autovacuum, -1 means use
469
+ # vacuum_cost_limit
470
+
471
+
472
+ #------------------------------------------------------------------------------
473
+ # CLIENT CONNECTION DEFAULTS
474
+ #------------------------------------------------------------------------------
475
+
476
+ # - Statement Behavior -
477
+
478
+ #search_path = '"$user",public' # schema names
479
+ #default_tablespace = '' # a tablespace name, '' uses the default
480
+ #temp_tablespaces = '' # a list of tablespace names, '' uses
481
+ # only default tablespace
482
+ #check_function_bodies = on
483
+ #default_transaction_isolation = 'read committed'
484
+ #default_transaction_read_only = off
485
+ #default_transaction_deferrable = off
486
+ #session_replication_role = 'origin'
487
+ #statement_timeout = 0 # in milliseconds, 0 is disabled
488
+ #vacuum_freeze_min_age = 50000000
489
+ #vacuum_freeze_table_age = 150000000
490
+ #bytea_output = 'hex' # hex, escape
491
+ #xmlbinary = 'base64'
492
+ #xmloption = 'content'
493
+
494
+ # - Locale and Formatting -
495
+
496
+ datestyle = 'iso, mdy'
497
+ #intervalstyle = 'postgres'
498
+ timezone = 'UTC'
499
+ #timezone_abbreviations = 'Default' # Select the set of available time zone
500
+ # abbreviations. Currently, there are
501
+ # Default
502
+ # Australia
503
+ # India
504
+ # You can create your own file in
505
+ # share/timezonesets/.
506
+ #extra_float_digits = 0 # min -15, max 3
507
+ #client_encoding = sql_ascii # actually, defaults to database
508
+ # encoding
509
+
510
+ # These settings are initialized by initdb, but they can be changed.
511
+ lc_messages = 'en_US.UTF-8' # locale for system error message
512
+ # strings
513
+ lc_monetary = 'en_US.UTF-8' # locale for monetary formatting
514
+ lc_numeric = 'en_US.UTF-8' # locale for number formatting
515
+ lc_time = 'en_US.UTF-8' # locale for time formatting
516
+
517
+ # default configuration for text search
518
+ default_text_search_config = 'pg_catalog.english'
519
+
520
+ # - Other Defaults -
521
+
522
+ #dynamic_library_path = '$libdir'
523
+ #local_preload_libraries = ''
524
+
525
+
526
+ #------------------------------------------------------------------------------
527
+ # LOCK MANAGEMENT
528
+ #------------------------------------------------------------------------------
529
+
530
+ #deadlock_timeout = 1s
531
+ #max_locks_per_transaction = 64 # min 10
532
+ # (change requires restart)
533
+ # Note: Each lock table slot uses ~270 bytes of shared memory, and there are
534
+ # max_locks_per_transaction * (max_connections + max_prepared_transactions)
535
+ # lock table slots.
536
+ #max_pred_locks_per_transaction = 64 # min 10
537
+ # (change requires restart)
538
+
539
+
540
+ #------------------------------------------------------------------------------
541
+ # VERSION/PLATFORM COMPATIBILITY
542
+ #------------------------------------------------------------------------------
543
+
544
+ # - Previous PostgreSQL Versions -
545
+
546
+ #array_nulls = on
547
+ #backslash_quote = safe_encoding # on, off, or safe_encoding
548
+ #default_with_oids = off
549
+ #escape_string_warning = on
550
+ #lo_compat_privileges = off
551
+ #quote_all_identifiers = off
552
+ #sql_inheritance = on
553
+ #standard_conforming_strings = on
554
+ #synchronize_seqscans = on
555
+
556
+ # - Other Platforms and Clients -
557
+
558
+ #transform_null_equals = off
559
+
560
+
561
+ #------------------------------------------------------------------------------
562
+ # ERROR HANDLING
563
+ #------------------------------------------------------------------------------
564
+
565
+ #exit_on_error = off # terminate session on any error?
566
+ #restart_after_crash = on # reinitialize after backend crash?
567
+
568
+
569
+ #------------------------------------------------------------------------------
570
+ # CUSTOMIZED OPTIONS
571
+ #------------------------------------------------------------------------------
572
+
573
+ # Add settings for extensions here
@@ -0,0 +1,11 @@
1
+ # Redis Server 2.4.15
2
+ #
3
+ # VERSION 0.0.1
4
+
5
+ FROM fgrehm/ventriloquist-base
6
+ MAINTAINER Fabio Rehm "fgrehm@gmail.com"
7
+
8
+ RUN apt-get install -y redis-server
9
+
10
+ EXPOSE 6379:6379
11
+ CMD ["/usr/bin/redis-server"]
@@ -0,0 +1,26 @@
1
+ if ENV['COVERAGE'] == 'true'
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ end
5
+
6
+ require 'bogus/rspec'
7
+
8
+ require 'ventriloquist'
9
+
10
+ Bogus.configure do |c|
11
+ c.search_modules << VagrantPlugins::Ventriloquist
12
+ c.search_modules << VagrantPlugins::Vocker
13
+ c.search_modules << Vagrant
14
+ end
15
+
16
+ RSpec.configure do |config|
17
+ config.treat_symbols_as_metadata_keys_with_true_values = true
18
+ config.run_all_when_everything_filtered = true
19
+ config.filter_run :focus
20
+
21
+ # Run specs in random order to surface order dependencies. If you find an
22
+ # order dependency and want to debug it, you can fix the order by providing
23
+ # the seed, which is printed after each run.
24
+ # --seed 1234
25
+ config.order = 'random'
26
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ require 'ventriloquist/platforms_builder'
4
+
5
+ describe VagrantPlugins::Ventriloquist::PlatformsBuilder do
6
+ Platform = VagrantPlugins::Ventriloquist::Platform
7
+
8
+ verify_contract(:platforms_builder)
9
+
10
+ fake(:docker_client)
11
+
12
+ let(:cfg) { {version: '13.0'} }
13
+ let(:platforms_configs) { [{my_lang: cfg}, :your_lang, ['my_plat:version']] }
14
+ let(:custom_mapping) { {'my_lang' => my_lang_class, 'your_lang' => your_lang_class, 'my_plat' => my_plat_class} }
15
+
16
+ let(:my_lang_class) do
17
+ Class.new(Platform)
18
+ end
19
+ let(:your_lang_class) do
20
+ Class.new(Platform)
21
+ end
22
+ let(:my_plat_class) do
23
+ Class.new(Platform)
24
+ end
25
+
26
+ let(:platforms) { described_class.new(platforms_configs, custom_mapping).build }
27
+
28
+ let(:my_lang) { platforms[0] }
29
+ let(:your_lang) { platforms[1] }
30
+ let(:my_plat) { platforms[2] }
31
+
32
+ it 'builds a list of platform objects' do
33
+ expect(platforms).to have(3).items
34
+ expect(my_lang).to be_a(my_lang_class)
35
+ expect(your_lang).to be_a(your_lang_class)
36
+ expect(my_plat).to be_a(my_plat_class)
37
+ end
38
+
39
+ it 'extracts version from platform name' do
40
+ expect(my_plat.config[:version]).to eq('version')
41
+ end
42
+
43
+ it 'defaults configured version to latest' do
44
+ expect(your_lang.config[:version]).to eq('latest')
45
+ end
46
+
47
+ it 'configures services using defined configs' do
48
+ expect(my_lang.config).to eq(cfg)
49
+ end
50
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ require 'vocker/docker_client'
4
+ require Vagrant.source_root.join('plugins/communicators/ssh/communicator')
5
+
6
+ require 'ventriloquist/service'
7
+
8
+ describe VagrantPlugins::Ventriloquist::Service do
9
+ verify_contract(:service)
10
+
11
+ fake(:docker_client)
12
+ fake(:communicator) { VagrantPlugins::CommunicatorSSH::Communicator }
13
+ let(:machine) { fake(:machine, communicate: communicator) }
14
+
15
+ let(:service_name) { 'dbserver' }
16
+ let(:service_conf) { { image: 'user/dbserver', tag: 'latest' } }
17
+
18
+ subject { described_class.new(service_name, service_conf, docker_client) }
19
+
20
+ before { subject.provision(machine) }
21
+
22
+ it 'runs the configured container' do
23
+ expect(docker_client).to have_received.run_container(service_conf)
24
+ end
25
+
26
+ it 'creates a directory for keeping container id files' do
27
+ expect(communicator).to have_received.sudo('mkdir -p /var/lib/ventriloquist/cids')
28
+ end
29
+
30
+ it 'assigns a cidfile based on the service name' do
31
+ expected_cidfile = "#{described_class::CONTAINER_IDS_PATH}/#{service_name}"
32
+ expect(docker_client).to have_received.run_container(with{|c| c[:cidfile] == expected_cidfile})
33
+ end
34
+
35
+ it 'sets dns to 127.0.0.1 to reduce latency' do
36
+ expect(docker_client).to have_received.run_container(with{|c| c[:dns] == "127.0.0.1"})
37
+ end
38
+ end