From 756ea531a026bbd85f34e67a6b4fd3f760508e53 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:25:27 +0100 Subject: [PATCH 1/8] Start working on Performances tests --- .../android/PerfsInstrumentedUnitTest.kt | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt diff --git a/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt new file mode 100644 index 00000000..218e63e7 --- /dev/null +++ b/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt @@ -0,0 +1,144 @@ +package net.pokeranalytics.android + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import io.realm.Realm +import io.realm.kotlin.where +import net.pokeranalytics.android.calculus.Calculator +import net.pokeranalytics.android.calculus.ComputableGroup +import net.pokeranalytics.android.calculus.ComputedResults +import net.pokeranalytics.android.calculus.Stat +import net.pokeranalytics.android.model.Limit +import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.model.utils.Seed +import org.junit.Test +import org.junit.runner.RunWith +import timber.log.Timber +import java.util.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class PerfsInstrumentedUnitTest : RealmInstrumentedUnitTest() { + + @Test + fun testGlobalPerfs() { + + Timber.d("*** start global perfs ") + + + val realm = mockRealm + val app: Context = ApplicationProvider.getApplicationContext() + + realm.beginTransaction() + Seed(app).execute(realm) + realm.commitTransaction() + + val buyinList = arrayListOf(100.0, 200.0, 300.0, 500.0, 1000.0, 2000.0) + val resultsList = arrayListOf( + -2500.0, -2000.0, -1500.0, -1000.0, -500.0, 200.0, 1000.0, 1500.0, 2500.0 + ) + + val commitFrequency = 100 + + try { + + val realm = Realm.getDefaultInstance() + val games = realm.where().findAll() + val bankroll = realm.where().findAll().firstOrNull() + + // Test endedSessions + val sessions = realm.where().findAll() + if (sessions.size < 10) { + + val numberOfSessions = 200 + Timber.d("*** Start creating ${numberOfSessions} fake computables...") + + val s = Date() + + realm.beginTransaction() + + for (index in 0..numberOfSessions) { + Timber.d("index: ${index}") + + if (index % commitFrequency == 0) { + Timber.d("****** committing at ${index} computables...") + realm.commitTransaction() + realm.beginTransaction() + } + + val session = Session.newInstance(realm, false, bankroll) + + val calendar = Calendar.getInstance() + calendar.set( + (2016..2018).random(), + (0..11).random(), + (0..28).random(), + (0..23).random(), + (0..59).random() + ) + + val startDate = calendar.time + calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) + calendar.add(Calendar.MINUTE, (0..59).random()) + val endDate = calendar.time + + session.startDate = startDate + session.endDate = endDate + session.creationDate = startDate + + session.limit = Limit.values().random().ordinal + session.game = games.random() + + session.result?.let { result -> + result.buyin = buyinList.random() + result.netResult = resultsList.random() + } + + Timber.d("Session: ${session.computableResult}") + Timber.d("Session: ${session.result}") + } + + realm.commitTransaction() + + val e = Date() + val duration = (e.time - s.time) / 1000.0 + Timber.d("*** ended in ${duration} seconds") + + } + + realm.close() + + } catch (e: Exception) { + Timber.e(e) + } + + + + val start = System.currentTimeMillis() + + val sessions = realm.where(Session::class.java).findAll() + val computableResults = realm.where(ComputableResult::class.java).findAll() + val sets = realm.where(SessionSet::class.java).findAll() + + Timber.d("sessions: ${sessions.size}") + Timber.d("computableResults: ${computableResults.size}") + Timber.d("sets: ${sets.size}") + + val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val group = ComputableGroup("test", computableResults, sets, stats) + + val options = Calculator.Options() + options.displayedStats = listOf(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS, Stat.STANDARD_DEVIATION) + + val results: ComputedResults = Calculator.compute(group, options) + + Timber.d("*** ended in ${System.currentTimeMillis() - start} milliseconds") + } + + +} \ No newline at end of file From b607f139f36175874f1bb898df0a93ccf0af6738 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:25:44 +0100 Subject: [PATCH 2/8] Add day of month for time filterable --- .../android/model/filter/interfaces/TimeFilterable.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/interfaces/TimeFilterable.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/interfaces/TimeFilterable.kt index f900d86d..f4713e4b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/interfaces/TimeFilterable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/interfaces/TimeFilterable.kt @@ -5,6 +5,7 @@ import java.util.* interface TimeFilterable { var dayOfWeek : Int? + var dayOfMonth : Int? var month : Int? var year : Int? @@ -13,6 +14,7 @@ interface TimeFilterable { val cal = Calendar.getInstance() cal.time = it dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) + dayOfMonth = cal.get(Calendar.DAY_OF_MONTH) month = cal.get(Calendar.MONTH) year = cal.get(Calendar.YEAR) } From dcce852672d1936eddab73eb246f3aee32dccb1c Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:25:58 +0100 Subject: [PATCH 3/8] Add day of month for time filterable --- .../main/java/net/pokeranalytics/android/model/realm/Session.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index ae91e05c..9a7170d0 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -105,6 +105,7 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource override var dayOfWeek : Int? = null override var month: Int? = null override var year: Int? = null + override var dayOfMonth: Int? = null /** * The start date of the session From 44df99c9c068bf8d5e11af71ac3cb6e9a4b0ac03 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:42:47 +0100 Subject: [PATCH 4/8] Add FakeDataManager --- .../android/util/FakeDataManager.kt | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt diff --git a/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt new file mode 100644 index 00000000..977285ed --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt @@ -0,0 +1,111 @@ +package net.pokeranalytics.android.util + +import io.realm.Realm +import io.realm.kotlin.where +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import net.pokeranalytics.android.model.Limit +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.model.realm.Game +import net.pokeranalytics.android.model.realm.Session +import timber.log.Timber +import java.util.* + +class FakeDataManager { + + companion object { + + /** + * Create the given number of fake sessions + */ + fun createFakeSessions(numberOfSessions: Int = 1000, callback: ((success: Boolean) -> Unit)? = null) { + + val buyinList = arrayListOf(100.0, 200.0, 300.0, 500.0, 1000.0, 2000.0) + val resultsList = arrayListOf( + -2500.0, -2000.0, -1500.0, -1000.0, -500.0, 200.0, 1000.0, 1500.0, 2500.0 + ) + + val commitFrequency = 100 + + GlobalScope.launch { + + try { + + val realm = Realm.getDefaultInstance() + val games = realm.where().findAll() + val bankroll = realm.where().findAll().firstOrNull() + + // Test endedSessions + + Timber.d("*** Start creating ${numberOfSessions} fake computables...") + + val s = Date() + + realm.beginTransaction() + + for (index in 0..numberOfSessions) { + + if (index % commitFrequency == 0) { + Timber.d("****** committing at ${index} computables...") + realm.commitTransaction() + realm.beginTransaction() + } + + val session = Session.newInstance(realm, Math.random() > 0.5, bankroll) + + val bigBlind = arrayListOf(1.0, 2.0, 4.0).random() + session.cgBigBlind = bigBlind + session.cgSmallBlind = bigBlind / 2.0 + + val calendar = Calendar.getInstance() + calendar.set( + (2016..2018).random(), + (0..11).random(), + (0..28).random(), + (0..23).random(), + (0..59).random() + ) + + val startDate = calendar.time + calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) + calendar.add(Calendar.MINUTE, (0..59).random()) + val endDate = calendar.time + + session.startDate = startDate + session.endDate = endDate + session.creationDate = startDate + + session.limit = Limit.values().random().ordinal + session.game = games.random() + + session.result?.let { result -> + result.buyin = buyinList.random() + result.netResult = resultsList.random() + } + + } + + realm.commitTransaction() + + val e = Date() + val duration = (e.time - s.time) / 1000.0 + Timber.d("*** ended in ${duration} seconds") + + realm.close() + + launch(Dispatchers.Main) { + callback?.invoke(true) + } + + } catch (e: Exception) { + Timber.e(e) + launch(Dispatchers.Main) { + callback?.invoke(true) + } + } + } + } + } + +} \ No newline at end of file From dbcac06de3634e10c2599ddffdf63a0169f87649 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:42:58 +0100 Subject: [PATCH 5/8] Update with FakeDataManager --- .../android/PokerAnalyticsApplication.kt | 104 +++--------------- 1 file changed, 16 insertions(+), 88 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 7bfb7c77..d745ec10 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -7,14 +7,11 @@ import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmResults import io.realm.kotlin.where -import net.pokeranalytics.android.model.Limit -import net.pokeranalytics.android.model.realm.Bankroll -import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.utils.Seed +import net.pokeranalytics.android.util.FakeDataManager import net.pokeranalytics.android.util.PokerAnalyticsLogs import timber.log.Timber -import java.util.* class PokerAnalyticsApplication : Application() { @@ -68,8 +65,23 @@ class PokerAnalyticsApplication : Application() { if (BuildConfig.DEBUG) { this.createFakeSessions() // debug } + } + + /** + * Create fake sessions if we have less than 10 sessions + */ + private fun createFakeSessions() { + + val realm = Realm.getDefaultInstance() + val sessionsCount = realm.where().findAll().size + realm.close() + + if (sessionsCount < 10) { + FakeDataManager.createFakeSessions(2000) + } } + // // private fun createFakeStats() { // @@ -129,88 +141,4 @@ class PokerAnalyticsApplication : Application() { // // } - private fun createFakeSessions() { - - val buyinList = arrayListOf(100.0, 200.0, 300.0, 500.0, 1000.0, 2000.0) - val resultsList = arrayListOf( - -2500.0, -2000.0, -1500.0, -1000.0, -500.0, 200.0, 1000.0, 1500.0, 2500.0 - ) - - val commitFrequency = 100 - - Thread() { - - try { - - val realm = Realm.getDefaultInstance() - val games = realm.where().findAll() - val bankroll = realm.where().findAll().firstOrNull() - - // Test endedSessions - val sessions = realm.where().findAll() - if (sessions.size < 10) { - - val numberOfSessions = 2000 - Timber.d("*** Start creating ${numberOfSessions} fake computables...") - - val s = Date() - - realm.beginTransaction() - - for (index in 0..numberOfSessions) { - - if (index % commitFrequency == 0) { - Timber.d("****** committing at ${index} computables...") - realm.commitTransaction() - realm.beginTransaction() - } - - val session = Session.newInstance(realm, false, bankroll) - - val calendar = Calendar.getInstance() - calendar.set( - (2016..2018).random(), - (0..11).random(), - (0..28).random(), - (0..23).random(), - (0..59).random() - ) - - val startDate = calendar.time - calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) - calendar.add(Calendar.MINUTE, (0..59).random()) - val endDate = calendar.time - - session.startDate = startDate - session.endDate = endDate - session.creationDate = startDate - - session.limit = Limit.values().random().ordinal - session.game = games.random() - - session.result?.let { result -> - result.buyin = buyinList.random() - result.netResult = resultsList.random() - } - - } - - realm.commitTransaction() - - val e = Date() - val duration = (e.time - s.time) / 1000.0 - Timber.d("*** ended in ${duration} seconds") - - } - - realm.close() - - } catch (e: Exception) { - Timber.e(e) - } - - }.start() - - } - } \ No newline at end of file From bd2b0c3a094d333623bee79426ac8e0ac5ca99c4 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:52:23 +0100 Subject: [PATCH 6/8] Remove background threat --- .../android/util/FakeDataManager.kt | 108 ++++++++---------- 1 file changed, 49 insertions(+), 59 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt index 977285ed..d11daa9a 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/FakeDataManager.kt @@ -2,9 +2,6 @@ package net.pokeranalytics.android.util import io.realm.Realm import io.realm.kotlin.where -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Game @@ -28,82 +25,75 @@ class FakeDataManager { val commitFrequency = 100 - GlobalScope.launch { + try { - try { + val realm = Realm.getDefaultInstance() + val games = realm.where().findAll() + val bankroll = realm.where().findAll().firstOrNull() - val realm = Realm.getDefaultInstance() - val games = realm.where().findAll() - val bankroll = realm.where().findAll().firstOrNull() + // Test endedSessions - // Test endedSessions + Timber.d("*** Start creating ${numberOfSessions} fake computables...") - Timber.d("*** Start creating ${numberOfSessions} fake computables...") + val s = Date() - val s = Date() + realm.beginTransaction() - realm.beginTransaction() + for (index in 0..numberOfSessions) { - for (index in 0..numberOfSessions) { - - if (index % commitFrequency == 0) { - Timber.d("****** committing at ${index} computables...") - realm.commitTransaction() - realm.beginTransaction() - } - - val session = Session.newInstance(realm, Math.random() > 0.5, bankroll) + if (index % commitFrequency == 0) { + Timber.d("****** committing at ${index} computables...") + realm.commitTransaction() + realm.beginTransaction() + } - val bigBlind = arrayListOf(1.0, 2.0, 4.0).random() - session.cgBigBlind = bigBlind - session.cgSmallBlind = bigBlind / 2.0 + val session = Session.newInstance(realm, Math.random() > 0.5, bankroll) - val calendar = Calendar.getInstance() - calendar.set( - (2016..2018).random(), - (0..11).random(), - (0..28).random(), - (0..23).random(), - (0..59).random() - ) + val bigBlind = arrayListOf(1.0, 2.0, 4.0).random() + session.cgBigBlind = bigBlind + session.cgSmallBlind = bigBlind / 2.0 - val startDate = calendar.time - calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) - calendar.add(Calendar.MINUTE, (0..59).random()) - val endDate = calendar.time + val calendar = Calendar.getInstance() + calendar.set( + (2016..2018).random(), + (0..11).random(), + (0..28).random(), + (0..23).random(), + (0..59).random() + ) - session.startDate = startDate - session.endDate = endDate - session.creationDate = startDate + val startDate = calendar.time + calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) + calendar.add(Calendar.MINUTE, (0..59).random()) + val endDate = calendar.time - session.limit = Limit.values().random().ordinal - session.game = games.random() + session.startDate = startDate + session.endDate = endDate + session.creationDate = startDate - session.result?.let { result -> - result.buyin = buyinList.random() - result.netResult = resultsList.random() - } + session.limit = Limit.values().random().ordinal + session.game = games.random() + session.result?.let { result -> + result.buyin = buyinList.random() + result.netResult = resultsList.random() } - realm.commitTransaction() + } + + realm.commitTransaction() - val e = Date() - val duration = (e.time - s.time) / 1000.0 - Timber.d("*** ended in ${duration} seconds") + val e = Date() + val duration = (e.time - s.time) / 1000.0 + Timber.d("*** ended in ${duration} seconds") - realm.close() + realm.close() - launch(Dispatchers.Main) { - callback?.invoke(true) - } + callback?.invoke(true) - } catch (e: Exception) { - Timber.e(e) - launch(Dispatchers.Main) { - callback?.invoke(true) - } - } + } catch (e: Exception) { + Timber.e(e) + callback?.invoke(true) } } } From 7fb251cae03efdf238f3fb49524794b4779fbbc4 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:52:33 +0100 Subject: [PATCH 7/8] Add thread --- .../net/pokeranalytics/android/PokerAnalyticsApplication.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index d745ec10..cef7e773 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -7,6 +7,8 @@ import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmResults import io.realm.kotlin.where +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.utils.Seed import net.pokeranalytics.android.util.FakeDataManager @@ -77,7 +79,9 @@ class PokerAnalyticsApplication : Application() { realm.close() if (sessionsCount < 10) { - FakeDataManager.createFakeSessions(2000) + GlobalScope.launch { + FakeDataManager.createFakeSessions(2000) + } } } From d9fc3828ed39f15eee5c4fc7f02f1bfbfbc4a0f8 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 21 Mar 2019 14:52:39 +0100 Subject: [PATCH 8/8] Update perfs tests --- .../android/PerfsInstrumentedUnitTest.kt | 110 +++--------------- 1 file changed, 19 insertions(+), 91 deletions(-) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt index 218e63e7..caf6fa3c 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/PerfsInstrumentedUnitTest.kt @@ -3,19 +3,18 @@ package net.pokeranalytics.android import android.content.Context import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 -import io.realm.Realm -import io.realm.kotlin.where import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.ComputableGroup import net.pokeranalytics.android.calculus.ComputedResults import net.pokeranalytics.android.calculus.Stat -import net.pokeranalytics.android.model.Limit -import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.model.realm.ComputableResult +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.model.realm.SessionSet import net.pokeranalytics.android.model.utils.Seed +import net.pokeranalytics.android.util.FakeDataManager import org.junit.Test import org.junit.runner.RunWith import timber.log.Timber -import java.util.* /** * Instrumented test, which will execute on an Android device. @@ -38,106 +37,35 @@ class PerfsInstrumentedUnitTest : RealmInstrumentedUnitTest() { Seed(app).execute(realm) realm.commitTransaction() - val buyinList = arrayListOf(100.0, 200.0, 300.0, 500.0, 1000.0, 2000.0) - val resultsList = arrayListOf( - -2500.0, -2000.0, -1500.0, -1000.0, -500.0, 200.0, 1000.0, 1500.0, 2500.0 - ) - val commitFrequency = 100 + FakeDataManager.createFakeSessions(2000) {success -> - try { + if (success) { - val realm = Realm.getDefaultInstance() - val games = realm.where().findAll() - val bankroll = realm.where().findAll().firstOrNull() + val start = System.currentTimeMillis() - // Test endedSessions - val sessions = realm.where().findAll() - if (sessions.size < 10) { + val sessions = realm.where(Session::class.java).findAll() + val computableResults = realm.where(ComputableResult::class.java).findAll() + val sets = realm.where(SessionSet::class.java).findAll() - val numberOfSessions = 200 - Timber.d("*** Start creating ${numberOfSessions} fake computables...") + Timber.d("sessions: ${sessions.size}") + Timber.d("computableResults: ${computableResults.size}") + Timber.d("sets: ${sets.size}") - val s = Date() + val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) + val group = ComputableGroup("test", computableResults, sets, stats) - realm.beginTransaction() + val options = Calculator.Options() + options.displayedStats = listOf(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS, Stat.STANDARD_DEVIATION) - for (index in 0..numberOfSessions) { - Timber.d("index: ${index}") + val results: ComputedResults = Calculator.compute(group, options) - if (index % commitFrequency == 0) { - Timber.d("****** committing at ${index} computables...") - realm.commitTransaction() - realm.beginTransaction() - } - - val session = Session.newInstance(realm, false, bankroll) - - val calendar = Calendar.getInstance() - calendar.set( - (2016..2018).random(), - (0..11).random(), - (0..28).random(), - (0..23).random(), - (0..59).random() - ) - - val startDate = calendar.time - calendar.add(Calendar.HOUR_OF_DAY, (2..12).random()) - calendar.add(Calendar.MINUTE, (0..59).random()) - val endDate = calendar.time - - session.startDate = startDate - session.endDate = endDate - session.creationDate = startDate - - session.limit = Limit.values().random().ordinal - session.game = games.random() - - session.result?.let { result -> - result.buyin = buyinList.random() - result.netResult = resultsList.random() - } - - Timber.d("Session: ${session.computableResult}") - Timber.d("Session: ${session.result}") - } - - realm.commitTransaction() - - val e = Date() - val duration = (e.time - s.time) / 1000.0 - Timber.d("*** ended in ${duration} seconds") + Timber.d("*** ended in ${System.currentTimeMillis() - start} milliseconds") } - realm.close() - - } catch (e: Exception) { - Timber.e(e) } - - - val start = System.currentTimeMillis() - - val sessions = realm.where(Session::class.java).findAll() - val computableResults = realm.where(ComputableResult::class.java).findAll() - val sets = realm.where(SessionSet::class.java).findAll() - - Timber.d("sessions: ${sessions.size}") - Timber.d("computableResults: ${computableResults.size}") - Timber.d("sets: ${sets.size}") - - val stats: List = listOf(Stat.NETRESULT, Stat.AVERAGE) - val group = ComputableGroup("test", computableResults, sets, stats) - - val options = Calculator.Options() - options.displayedStats = listOf(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS, Stat.STANDARD_DEVIATION) - - val results: ComputedResults = Calculator.compute(group, options) - - Timber.d("*** ended in ${System.currentTimeMillis() - start} milliseconds") }