swift-db-postgres 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.
@@ -0,0 +1,34 @@
1
+ require 'helper'
2
+
3
+ describe 'async operations' do
4
+ it 'can query async and call block with result when ready' do
5
+ rows = []
6
+ pool = 3.times.map {Swift::DB::Postgres.new(db: 'swift_test')}
7
+
8
+ 3.times do |n|
9
+ Thread.new do
10
+ pool[n].query("select pg_sleep(#{(3 - n) / 10.0}), #{n + 1} as query_id") {|row| rows << row[:query_id]}
11
+ end
12
+ end
13
+
14
+ Thread.list.reject {|thread| Thread.current == thread}.each(&:join)
15
+ assert_equal [3, 2, 1], rows
16
+ end
17
+
18
+ it 'returns and allows IO poll on connection file descriptor' do
19
+
20
+ rows = []
21
+ pool = 3.times.map {Swift::DB::Postgres.new(db: 'swift_test')}
22
+
23
+ 3.times do |n|
24
+ Thread.new do
25
+ pool[n].query("select pg_sleep(#{(3 - n) / 10.0}), #{n + 1} as query_id")
26
+ IO.select([IO.for_fd(pool[n].fileno)], [], [])
27
+ rows << pool[n].result.first[:query_id]
28
+ end
29
+ end
30
+
31
+ Thread.list.reject {|thread| Thread.current == thread}.each(&:join)
32
+ assert_equal [3, 2, 1], rows
33
+ end
34
+ end
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+
3
+ describe 'utf-8 encoding' do
4
+ before do
5
+ assert db.execute('drop table if exists users')
6
+ assert db.execute('create table users (name text)')
7
+
8
+ @text = ["King of \u2665s", "\xA1\xB8".force_encoding('euc-jp')]
9
+ end
10
+
11
+ it 'should store and retrieve utf8 characters with Statement#execute' do
12
+ @text.each do |name|
13
+ db.prepare('insert into users (name) values(?)').execute(name)
14
+ value = db.prepare('select * from users limit 1').execute.first[:name]
15
+ assert_equal Encoding::UTF_8, value.encoding
16
+ assert_equal name.encode('utf-8'), value
17
+ db.execute('delete from users')
18
+ end
19
+ end
20
+
21
+ it 'should store and retrieve utf8 characters Adapter#execute' do
22
+ @text.each do |name|
23
+ db.execute('insert into users (name) values(?)', name)
24
+ value = db.execute('select * from users limit 1').first[:name]
25
+ assert_equal Encoding::UTF_8, value.encoding
26
+ assert_equal name.encode('utf-8'), value
27
+ db.execute('delete from users')
28
+ end
29
+ end
30
+ end
data/test/test_ssl.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ describe 'adapter ssl' do
4
+ it 'should connect to database with ssl options' do
5
+ db.execute('create extension if not exists sslinfo')
6
+ key = File.join(File.dirname(__FILE__), 'server.key')
7
+ cert = File.join(File.dirname(__FILE__), 'server.crt')
8
+
9
+ assert db = Swift::DB::Postgres.new(db: 'swift_test', ssl: {sslmode: 'require', sslcert: cert, sslkey: key})
10
+ assert db.execute('select ssl_is_used()').first[:ssl_is_used]
11
+
12
+ assert db = Swift::DB::Postgres.new(db: 'swift_test', ssl: {sslmode: 'disable'})
13
+ assert !db.execute('select ssl_is_used()').first[:ssl_is_used]
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swift-db-postgres
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Bharanee Rathna
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Swift adapter for PostgreSQL database
31
+ email:
32
+ - deepfryed@gmail.com
33
+ executables: []
34
+ extensions:
35
+ - ext/swift/db/postgres/extconf.rb
36
+ extra_rdoc_files: []
37
+ files:
38
+ - ext/swift/db/postgres/datetime.c
39
+ - ext/swift/db/postgres/common.c
40
+ - ext/swift/db/postgres/typecast.c
41
+ - ext/swift/db/postgres/statement.c
42
+ - ext/swift/db/postgres/adapter.c
43
+ - ext/swift/db/postgres/main.c
44
+ - ext/swift/db/postgres/result.c
45
+ - ext/swift/db/postgres/typecast.h
46
+ - ext/swift/db/postgres/common.h
47
+ - ext/swift/db/postgres/datetime.h
48
+ - ext/swift/db/postgres/result.h
49
+ - ext/swift/db/postgres/adapter.h
50
+ - ext/swift/db/postgres/statement.h
51
+ - ext/swift/db/postgres/extconf.rb
52
+ - test/test_ssl.rb
53
+ - test/test_encoding.rb
54
+ - test/helper.rb
55
+ - test/test_async.rb
56
+ - test/test_adapter.rb
57
+ - lib/swift/db/postgres.rb
58
+ - lib/swift-db-postgres.rb
59
+ - README.md
60
+ - CHANGELOG
61
+ homepage: http://github.com/deepfryed/swift-db-postgres
62
+ licenses: []
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ - ext
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 1.8.24
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Swift postgres adapter
86
+ test_files: []
87
+ has_rdoc: