Created the calculatedAttributes_test package.

This commit is contained in:
Simon Sarasova 2024-06-07 01:33:10 +00:00
parent 649bf318c2
commit 8b0c41af45
No known key found for this signature in database
GPG key ID: EEDA4103C9C36944
8 changed files with 259 additions and 145 deletions

View file

@ -6,6 +6,7 @@ Small and insignificant changes may not be included in this log.
## Unversioned Changes
* Created the calculatedAttributes_test package. - *Simon Sarasova*
* Improved the creation process of genetic analyses in various ways. A sample of offspring polygenic disease risk scores are now created and viewable by users. - *Simon Sarasova*
* Improved the genetic analysis creation process in various ways. Recombination breakpoints are more accurately predicted now. - *Simon Sarasova*
* Improved the identity hash generation tool. The fastest quantity of goroutines is now identified and used. - *Simon Sarasova*

View file

@ -9,4 +9,4 @@ Many other people have written code for modules which are imported by Seekia. Th
Name | Date Of First Commit | Number Of Commits
--- | --- | ---
Simon Sarasova | June 13, 2023 | 251
Simon Sarasova | June 13, 2023 | 252

View file

@ -77,155 +77,20 @@ func SignInToAppUser(userName string, startBackgroundJobs bool)error{
appMemory.SetMemoryEntry("AppUser", userName)
userDirectoryPath, err := localFilesystem.GetAppUserFolderPath()
err := createAppUserDataFolders()
if (err != nil) { return err }
_, err = localFilesystem.CreateFolder(userDirectoryPath)
if (err != nil) { return err }
err = myMap.InitializeMyMapsFolder()
if (err != nil) { return err }
err = myList.InitializeMyListsFolder()
if (err != nil) { return err }
err = myMapList.InitializeMyMapListsFolder()
if (err != nil) { return err }
err = mySeedPhrases.InitializeMySeedPhrasesDatastore()
if (err != nil) { return err }
err = myBroadcasts.InitializeMyBroadcastsFolders()
if (err != nil) { return err }
err = myLocalDesires.InitializeMyDesiresDatastore()
if (err != nil) { return err }
err = myMateCriteria.InitializeMyCriteriaDatastore()
if (err != nil) { return err }
err = myMatchScore.InitializeMyMatchScorePointsDatastore()
if (err != nil) { return err }
err = mySettings.InitializeMySettingsDatastore()
if (err != nil) { return err }
err = myLocalProfiles.InitializeMyLocalProfileDatastores()
if (err != nil) { return err }
err = myMatches.InitializeMyMatchesDatastores()
if (err != nil) { return err }
err = myContacts.InitializeMyContactDatastores()
if (err != nil) { return err }
err = myIgnoredUsers.InitializeMyIgnoredUsersDatastore()
if (err != nil) { return err }
err = myBlockedUsers.InitializeMyBlockedUsersDatastore()
if (err != nil) { return err }
err = mySecretInboxes.InitializeMySecretInboxesDatastore()
if (err != nil) { return err }
err = myChatKeys.InitializeMyChatKeysDatastores()
if (err != nil) { return err }
err = myCipherKeys.InitializeMyMessageCipherKeysDatastore()
if (err != nil) { return err }
err = myReadStatus.InitializeMyReadStatusDatastore()
if (err != nil) { return err }
err = myConversationIndexes.InitializeMyConversationIndexesDatastore()
if (err != nil) { return err }
err = myChatFilters.InitializeMyChatFiltersDatastores()
if (err != nil) { return err }
err = myLikedUsers.InitializeMyLikedUsersDatastore()
if (err != nil) { return err }
err = myChatConversations.InitializeMyChatConversationsDatastores()
if (err != nil) { return err }
err = myChatMessages.InitializeMyChatMessageDatastores()
if (err != nil) { return err }
err = myMessageQueue.InitializeMyMessageQueueDatastore()
if (err != nil) { return err }
err = peerChatKeys.InitializePeerChatKeysDatastores()
if (err != nil) { return err }
err = peerSecretInboxes.InitializePeerSecretInboxesDatastore()
if (err != nil) { return err }
err = peerDevices.InitializePeerDevicesDatastore()
if (err != nil) { return err }
err = sendMessages.InitializeSentMessagesDatastore()
if (err != nil) { return err }
err = myGenomes.InitializeMyGenomeDatastore()
if (err != nil) { return err }
err = myGenomes.CreateUserGenomesFolder()
if (err != nil) { return err }
err = myPeople.InitializeMyGenomePeopleDatastore()
if (err != nil) { return err }
err = myCouples.InitializeMyGenomeCouplesDatastore()
if (err != nil) { return err }
err = myAnalyses.InitializeMyAnalysesDatastores()
if (err != nil) { return err }
err = myAnalyses.CreateMyAnalysesFolder()
err = initializeAppUserDatastores()
if (err != nil) { return err }
err = myAnalyses.PruneOldAnalyses()
if (err != nil) { return err }
err = viewedContent.InitializeViewedContentDatastores()
if (err != nil) { return err }
err = logger.InitializeMyLogDatastores()
if (err != nil) { return err }
err = viewedModerators.InitializeViewedModeratorsDatastores()
if (err != nil) { return err }
err = viewedHosts.InitializeViewedHostsDatastores()
if (err != nil) { return err }
err = mySkippedContent.InitializeMySkippedContentDatastores()
if (err != nil) { return err }
err = myHiddenContent.InitializeMyHiddenContentDatastores()
if (err != nil) { return err }
if (applicationVariablesInitialized == false){
// This only needs to be done once per application startup
err := worldLocations.InitializeWorldLocationsVariables()
if (err != nil) { return err }
err = worldLanguages.InitializeWorldLanguageVariables()
if (err != nil) { return err }
err = locusMetadata.InitializeLocusMetadataVariables()
if (err != nil) { return err }
monogenicDiseases.InitializeMonogenicDiseaseVariables()
polygenicDiseases.InitializePolygenicDiseaseVariables()
traits.InitializeTraitVariables()
err = profileFormat.InitializeProfileFormatVariables()
err := initializeApplicationVariables()
if (err != nil) { return err }
applicationVariablesInitialized = true
@ -484,7 +349,7 @@ func DeleteAppUser(userName string)(bool, error){
// We use this to partially sign in to the first app user when testing packages that need it
// An example is myMap, which requires an app user to be signed in to use it
// We don't need to sign the user out after calling this function, because we only use this for testing
func InitializeAppUserForTests()error{
func InitializeAppUserForTests(initializeAppDatastores bool, initializeAppVariables bool)error{
appUsersList, err := GetAppUsersList()
if (err != nil){ return err }
@ -497,6 +362,51 @@ func InitializeAppUserForTests()error{
appMemory.SetMemoryEntry("AppUser", userName)
err = createAppUserDataFolders()
if (err != nil) { return err }
if (initializeAppDatastores == true){
err := initializeAppUserDatastores()
if (err != nil) { return err }
}
if (initializeAppVariables == true){
err := initializeApplicationVariables()
if (err != nil) { return err }
}
return nil
}
func initializeApplicationVariables()error{
// This only needs to be done once per application startup
err := worldLocations.InitializeWorldLocationsVariables()
if (err != nil) { return err }
err = worldLanguages.InitializeWorldLanguageVariables()
if (err != nil) { return err }
err = locusMetadata.InitializeLocusMetadataVariables()
if (err != nil) { return err }
monogenicDiseases.InitializeMonogenicDiseaseVariables()
polygenicDiseases.InitializePolygenicDiseaseVariables()
traits.InitializeTraitVariables()
err = profileFormat.InitializeProfileFormatVariables()
if (err != nil) { return err }
return nil
}
func createAppUserDataFolders()error{
userDirectoryPath, err := localFilesystem.GetAppUserFolderPath()
if (err != nil) { return err }
@ -512,7 +422,124 @@ func InitializeAppUserForTests()error{
err = myMapList.InitializeMyMapListsFolder()
if (err != nil) { return err }
err = myBroadcasts.InitializeMyBroadcastsFolders()
if (err != nil) { return err }
err = myGenomes.CreateUserGenomesFolder()
if (err != nil) { return err }
err = myAnalyses.CreateMyAnalysesFolder()
if (err != nil) { return err }
return nil
}
func initializeAppUserDatastores()error{
err := mySeedPhrases.InitializeMySeedPhrasesDatastore()
if (err != nil) { return err }
err = myLocalDesires.InitializeMyDesiresDatastore()
if (err != nil) { return err }
err = myMateCriteria.InitializeMyCriteriaDatastore()
if (err != nil) { return err }
err = myMatchScore.InitializeMyMatchScorePointsDatastore()
if (err != nil) { return err }
err = mySettings.InitializeMySettingsDatastore()
if (err != nil) { return err }
err = myLocalProfiles.InitializeMyLocalProfileDatastores()
if (err != nil) { return err }
err = myMatches.InitializeMyMatchesDatastores()
if (err != nil) { return err }
err = myContacts.InitializeMyContactDatastores()
if (err != nil) { return err }
err = myIgnoredUsers.InitializeMyIgnoredUsersDatastore()
if (err != nil) { return err }
err = myBlockedUsers.InitializeMyBlockedUsersDatastore()
if (err != nil) { return err }
err = mySecretInboxes.InitializeMySecretInboxesDatastore()
if (err != nil) { return err }
err = myChatKeys.InitializeMyChatKeysDatastores()
if (err != nil) { return err }
err = myCipherKeys.InitializeMyMessageCipherKeysDatastore()
if (err != nil) { return err }
err = myReadStatus.InitializeMyReadStatusDatastore()
if (err != nil) { return err }
err = myConversationIndexes.InitializeMyConversationIndexesDatastore()
if (err != nil) { return err }
err = myChatFilters.InitializeMyChatFiltersDatastores()
if (err != nil) { return err }
err = myLikedUsers.InitializeMyLikedUsersDatastore()
if (err != nil) { return err }
err = myChatConversations.InitializeMyChatConversationsDatastores()
if (err != nil) { return err }
err = myChatMessages.InitializeMyChatMessageDatastores()
if (err != nil) { return err }
err = myMessageQueue.InitializeMyMessageQueueDatastore()
if (err != nil) { return err }
err = peerChatKeys.InitializePeerChatKeysDatastores()
if (err != nil) { return err }
err = peerSecretInboxes.InitializePeerSecretInboxesDatastore()
if (err != nil) { return err }
err = peerDevices.InitializePeerDevicesDatastore()
if (err != nil) { return err }
err = sendMessages.InitializeSentMessagesDatastore()
if (err != nil) { return err }
err = myGenomes.InitializeMyGenomeDatastore()
if (err != nil) { return err }
err = myPeople.InitializeMyGenomePeopleDatastore()
if (err != nil) { return err }
err = myCouples.InitializeMyGenomeCouplesDatastore()
if (err != nil) { return err }
err = myAnalyses.InitializeMyAnalysesDatastores()
if (err != nil) { return err }
err = viewedContent.InitializeViewedContentDatastores()
if (err != nil) { return err }
err = logger.InitializeMyLogDatastores()
if (err != nil) { return err }
err = viewedModerators.InitializeViewedModeratorsDatastores()
if (err != nil) { return err }
err = viewedHosts.InitializeViewedHostsDatastores()
if (err != nil) { return err }
err = mySkippedContent.InitializeMySkippedContentDatastores()
if (err != nil) { return err }
err = myHiddenContent.InitializeMyHiddenContentDatastores()
if (err != nil) { return err }
return nil
}

View file

@ -14,7 +14,7 @@ func TestBlockUnblockUser(t *testing.T){
t.Fatalf("Failed to initialize app datastores: " + err.Error())
}
err = appUsers.InitializeAppUserForTests()
err = appUsers.InitializeAppUserForTests(false, false)
if (err != nil){
t.Fatalf("Failed to initialize app user for tests: " + err.Error())
}

View file

@ -16,7 +16,7 @@ func TestMyList(t *testing.T){
if (err != nil){
t.Fatalf("Failed to initialize app datastores: " + err.Error())
}
err = appUsers.InitializeAppUserForTests()
err = appUsers.InitializeAppUserForTests(false, false)
if (err != nil){
t.Fatalf("Failed to initalize app user for tests: " + err.Error())
}

View file

@ -14,7 +14,7 @@ func TestMyMap(t *testing.T) {
if (err != nil){
t.Fatalf("Failed to initialize app datastores: " + err.Error())
}
err = appUsers.InitializeAppUserForTests()
err = appUsers.InitializeAppUserForTests(false, false)
if (err != nil){
t.Fatalf("Failed to initalize app user for tests: " + err.Error())
}

View file

@ -16,7 +16,7 @@ func TestAddDeleteMapListData(t *testing.T) {
if (err != nil){
t.Fatalf("Failed to initialize app datastores: " + err.Error())
}
err = appUsers.InitializeAppUserForTests()
err = appUsers.InitializeAppUserForTests(false, false)
if (err != nil){
t.Fatalf("Failed to initalize app user for tests: " + err.Error())
}
@ -178,7 +178,7 @@ func TestMapListCopying(t *testing.T){
if (err != nil){
t.Fatalf("Failed to initialize app datastores: " + err.Error())
}
err = appUsers.InitializeAppUserForTests()
err = appUsers.InitializeAppUserForTests(false, false)
if (err != nil){
t.Fatalf("Failed to initalize app user for tests: " + err.Error())
}

View file

@ -0,0 +1,86 @@
package calculatedAttributes_test
import "seekia/internal/profiles/calculatedAttributes"
import "seekia/internal/appUsers"
import "seekia/internal/generate"
import "seekia/internal/identity"
import "seekia/internal/localFilesystem"
import "seekia/internal/profiles/readProfiles"
import "testing"
func TestCalculatedAttributes(t *testing.T){
err := localFilesystem.InitializeAppDatastores()
if (err != nil){
t.Fatalf("InitializeAppDatastores failed: " + err.Error())
}
err = appUsers.InitializeAppUserForTests(true, true)
if (err != nil) {
t.Fatalf("InitializeAppUserForTests failed: " + err.Error())
}
calculatedAttributesList := calculatedAttributes.GetCalculatedAttributesList()
for i:=0; i<100; i++{
identityPublicKey, identityPrivateKey, err := identity.GetNewRandomPublicPrivateIdentityKeys()
if (err != nil){
t.Fatalf("GetNewRandomPublicPrivateIdentityKeys failed: " + err.Error())
return
}
fakeProfileBytes, err := generate.GetFakeProfile("Mate", identityPublicKey, identityPrivateKey, 1)
if (err != nil){
t.Fatalf("GetFakeProfile failed: " + err.Error())
return
}
ableToRead, profileVersion, _, profileAuthor, _, _, rawProfileMap, err := readProfiles.ReadProfile(true, fakeProfileBytes)
if (err != nil){
t.Fatalf("ReadProfile failed: " + err.Error())
return
}
if (ableToRead == false){
t.Fatalf("ReadProfile cant read profile returned from GetFakeProfile.")
return
}
profileType, err := identity.GetIdentityTypeFromIdentityHash(profileAuthor)
if (err != nil){
t.Fatalf("ReadProfile returning invalid identityHash: " + err.Error())
return
}
getProfileAttributesFunction := func(attributeName string)(bool, int, string, error){
attributeExists, attributeValue, err := readProfiles.GetFormattedProfileAttributeFromRawProfileMap(rawProfileMap, attributeName)
if (err != nil) { return false, 0, "", err }
if (attributeExists == false){
return false, profileVersion, "", nil
}
return true, profileVersion, attributeValue, nil
}
for _, attributeName := range calculatedAttributesList{
if (profileType != "Moderator"){
if (attributeName == "IdentityScore" || attributeName == "Controversy" || attributeName == "NumberOfReviews"){
continue
}
}
_, _, _, err := calculatedAttributes.GetAnyProfileAttributeIncludingCalculated(attributeName, getProfileAttributesFunction)
if (err != nil) {
t.Fatalf("GetAnyProfileAttributeIncludingCalculated failed: " + err.Error())
return
}
}
}
}