swift-db-postgres 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: