gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: DB connection via UNIX domain sockets.


From: gnunet
Subject: [libeufin] branch master updated: DB connection via UNIX domain sockets.
Date: Fri, 05 May 2023 17:00:42 +0200

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 550c2b39 DB connection via UNIX domain sockets.
550c2b39 is described below

commit 550c2b39faaa8e4384e879b02e6ceabddf24bb36
Author: MS <ms@taler.net>
AuthorDate: Fri May 5 16:59:16 2023 +0200

    DB connection via UNIX domain sockets.
    
    That includes switching all the tests to use it.
---
 nexus/build.gradle                                      | 5 +++++
 nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt         | 4 ++--
 nexus/src/main/kotlin/tech/libeufin/nexus/Scheduling.kt | 3 ---
 nexus/src/test/kotlin/MakeEnv.kt                        | 8 ++++++--
 sandbox/build.gradle                                    | 3 +++
 sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt     | 5 +++--
 sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt   | 4 ++--
 sandbox/src/test/kotlin/DBTest.kt                       | 3 ++-
 util/src/main/kotlin/Config.kt                          | 4 +++-
 9 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/nexus/build.gradle b/nexus/build.gradle
index 39a519af..24e9c8cb 100644
--- a/nexus/build.gradle
+++ b/nexus/build.gradle
@@ -79,6 +79,7 @@ dependencies {
     implementation "io.ktor:ktor-client-apache:$ktor_version"
     implementation "io.ktor:ktor-client-auth:$ktor_version"
     implementation "io.ktor:ktor-server-netty:$ktor_version"
+
     // Brings the call-logging library too.
     implementation "io.ktor:ktor-server-test-host:$ktor_version"
     implementation "io.ktor:ktor-auth:$ktor_auth_version"
@@ -90,6 +91,9 @@ dependencies {
     // Cron syntax
     implementation 'com.cronutils:cron-utils:9.1.5'
 
+    // UNIX domain sockets support (used to connect to PostgreSQL)
+    implementation 'com.kohlschutter.junixsocket:junixsocket-core:2.6.2'
+
     // Unit testing
     // testImplementation 'junit:junit:4.13.2'
     // From 
https://docs.gradle.org/current/userguide/java_testing.html#sec:java_testing_basics:
@@ -97,6 +101,7 @@ dependencies {
     testImplementation 'org.jetbrains.kotlin:kotlin-test:1.5.21'
     testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.5.21'
     testImplementation 'io.ktor:ktor-client-mock:2.2.4'
+    testImplementation 'com.kohlschutter.junixsocket:junixsocket-core:2.6.2'
     testImplementation project(":sandbox")
 }
 
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
index 239515e8..2f54626b 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt
@@ -519,7 +519,7 @@ class NexusPermissionEntity(id: EntityID<Long>) : 
LongEntity(id) {
 }
 
 fun dbDropTables(dbConnectionString: String) {
-    Database.connect(dbConnectionString)
+    Database.connect(dbConnectionString, user = getCurrentUser())
     transaction {
         SchemaUtils.drop(
             NexusUsersTable,
@@ -545,7 +545,7 @@ fun dbDropTables(dbConnectionString: String) {
 }
 
 fun dbCreateTables(dbConnectionString: String) {
-    Database.connect(dbConnectionString)
+    Database.connect(dbConnectionString, user = getCurrentUser())
     TransactionManager.manager.defaultIsolationLevel = 
Connection.TRANSACTION_SERIALIZABLE
     transaction {
         SchemaUtils.create(
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Scheduling.kt 
b/nexus/src/main/kotlin/tech/libeufin/nexus/Scheduling.kt
index de6ff358..8b413b44 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Scheduling.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Scheduling.kt
@@ -34,9 +34,6 @@ import java.lang.IllegalArgumentException
 import java.time.Duration
 import java.time.Instant
 import java.time.ZonedDateTime
-import java.util.*
-import kotlin.concurrent.schedule
-import kotlin.coroutines.coroutineContext
 import kotlin.system.exitProcess
 
 private data class TaskSchedule(
diff --git a/nexus/src/test/kotlin/MakeEnv.kt b/nexus/src/test/kotlin/MakeEnv.kt
index ebec64f4..daad7447 100644
--- a/nexus/src/test/kotlin/MakeEnv.kt
+++ b/nexus/src/test/kotlin/MakeEnv.kt
@@ -20,10 +20,14 @@ data class EbicsKeys(
 )
 // Convenience DB connection to switch to Postgresql:
 val currentUser = System.getProperty("user.name")
-val TEST_DB_CONN = 
"jdbc:postgresql://localhost:5432/libeufincheck?user=$currentUser"
+
 val BANK_IBAN = getIban()
 val FOO_USER_IBAN = getIban()
 val BAR_USER_IBAN = getIban()
+val 
TCP_POSTGRES_CONN="jdbc:postgresql://localhost:5432/libeufincheck?user=$currentUser"
+val UNIX_SOCKET_CONN= 
"jdbc:postgresql://localhost/libeufincheck?socketFactory=org.newsclub.net.unix."
 +
+        
"AFUNIXSocketFactory\$FactoryArg&socketFactoryArg=/var/run/postgresql/.s.PGSQL.5432"
+val TEST_DB_CONN = UNIX_SOCKET_CONN
 
 val bankKeys = EbicsKeys(
     auth = CryptoUtil.generateRsaKeyPair(2048),
@@ -66,7 +70,7 @@ inline fun <reified ExceptionType> assertException(
  * Cleans up the DB file afterwards.
  */
 fun withTestDatabase(f: () -> Unit) {
-    Database.connect(TEST_DB_CONN)
+    Database.connect(TEST_DB_CONN, user = currentUser)
     TransactionManager.manager.defaultIsolationLevel = 
java.sql.Connection.TRANSACTION_SERIALIZABLE
     dbDropTables(TEST_DB_CONN)
     tech.libeufin.sandbox.dbDropTables(TEST_DB_CONN)
diff --git a/sandbox/build.gradle b/sandbox/build.gradle
index aeb2a811..bc57b942 100644
--- a/sandbox/build.gradle
+++ b/sandbox/build.gradle
@@ -77,6 +77,9 @@ dependencies {
     testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.5.21'
     testImplementation 'org.jetbrains.kotlin:kotlin-test:1.5.21'
     testImplementation group: "junit", name: "junit", version: '4.13.2'
+
+    // UNIX domain sockets support (used to connect to PostgreSQL)
+    implementation 'com.kohlschutter.junixsocket:junixsocket-core:2.6.2'
 }
 
 application {
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
index ca83d31a..19d4283d 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
@@ -33,6 +33,7 @@ import org.jetbrains.exposed.dao.id.LongIdTable
 import org.jetbrains.exposed.sql.*
 import org.jetbrains.exposed.sql.transactions.TransactionManager
 import org.jetbrains.exposed.sql.transactions.transaction
+import tech.libeufin.util.getCurrentUser
 import tech.libeufin.util.internalServerError
 import java.sql.Connection
 import kotlin.reflect.*
@@ -665,7 +666,7 @@ class CashoutSubmissionEntity(id: EntityID<Long>) : 
LongEntity(id) {
 }
 
 fun dbDropTables(dbConnectionString: String) {
-    Database.connect(dbConnectionString)
+    Database.connect(dbConnectionString, user = getCurrentUser())
     transaction {
         SchemaUtils.drop(
             CashoutSubmissionsTable,
@@ -690,7 +691,7 @@ fun dbDropTables(dbConnectionString: String) {
 }
 
 fun dbCreateTables(dbConnectionString: String) {
-    Database.connect(dbConnectionString)
+    Database.connect(dbConnectionString, user = getCurrentUser())
     TransactionManager.manager.defaultIsolationLevel = 
Connection.TRANSACTION_SERIALIZABLE
     transaction {
         SchemaUtils.create(
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
index 4229638b..a6aab42e 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -232,7 +232,7 @@ class Camt053Tick : CliktCommand(
 ) {
     override fun run() {
         val dbConnString = getDbConnFromEnv(SANDBOX_DB_ENV_VAR_NAME)
-        Database.connect(dbConnString)
+        Database.connect(dbConnString, user = getCurrentUser())
         dbCreateTables(dbConnString)
         val newStatements = mutableMapOf<String, 
MutableList<XLibeufinBankTransaction>>()
         /**
@@ -301,7 +301,7 @@ class MakeTransaction : CliktCommand("Wire-transfer money 
between Sandbox bank a
 
     override fun run() {
         val dbConnString = getDbConnFromEnv(SANDBOX_DB_ENV_VAR_NAME)
-        Database.connect(dbConnString)
+        Database.connect(dbConnString, user = getCurrentUser())
         // Refuse to operate without a default demobank.
         val demobank = getDemobank("default")
         if (demobank == null) {
diff --git a/sandbox/src/test/kotlin/DBTest.kt 
b/sandbox/src/test/kotlin/DBTest.kt
index fb2b8292..519e3bf7 100644
--- a/sandbox/src/test/kotlin/DBTest.kt
+++ b/sandbox/src/test/kotlin/DBTest.kt
@@ -21,6 +21,7 @@ import org.jetbrains.exposed.sql.*
 import org.jetbrains.exposed.sql.transactions.transaction
 import org.junit.Test
 import tech.libeufin.sandbox.*
+import tech.libeufin.util.getCurrentUser
 import tech.libeufin.util.millis
 import java.io.File
 import java.time.LocalDateTime
@@ -38,7 +39,7 @@ fun withTestDatabase(f: () -> Unit) {
             it.delete()
         }
     }
-    Database.connect(dbConn)
+    Database.connect(dbConn, user = getCurrentUser())
     dbDropTables(dbConn)
     dbCreateTables(dbConn)
     try { f() }
diff --git a/util/src/main/kotlin/Config.kt b/util/src/main/kotlin/Config.kt
index be021390..b3c57ea2 100644
--- a/util/src/main/kotlin/Config.kt
+++ b/util/src/main/kotlin/Config.kt
@@ -74,4 +74,6 @@ fun getDbConnFromEnv(varName: String): String {
         exitProcess(1)
     }
     return dbConnStr
-}
\ No newline at end of file
+}
+
+fun getCurrentUser(): String = System.getProperty("user.name")
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]