Read aggregated counter table too for hourly stats #52
GitHub Actions / Test results
succeeded
Oct 14, 2024 in 0s
249 passed, 0 failed and 0 skipped
✅ tests/Hangfire.PostgreSql.Tests/TestResults/TestResults.trx
249 tests were completed in 94s with 249 passed, 0 failed and 0 skipped.
✅ Hangfire.PostgreSql.Tests.CountersAggregatorFacts
✅ Execute_AggregatesCounters
✅ Hangfire.PostgreSql.Tests.ExpirationManagerFacts
✅ Ctor_ThrowsAnException_WhenStorageIsNull
✅ Execute_Aggregates_CounterTable
✅ Execute_DoesNotRemoveEntries_WithFreshExpirationTime
✅ Execute_DoesNotRemoveEntries_WithNoExpirationTimeSet
✅ Execute_Processes_CounterTable
✅ Execute_Processes_HashTable
✅ Execute_Processes_JobTable
✅ Execute_Processes_ListTable
✅ Execute_Processes_SetTable
✅ Execute_RemovesOutdatedRecords
✅ Hangfire.PostgreSql.Tests.FirstClassQueueFeatureSupportTests
✅ EnqueueJobWithSpecificQueue_ShouldEnqueueCorrectlyAndJobMustBeProcessedInThatQueue
✅ HasFlag_ShouldReturnTrue_ForJobQueueProperty
✅ Hangfire.PostgreSql.Tests.PersistentJobQueueProviderCollectionFacts
✅ Add_ThrowsAnException_WhenProviderIsNull
✅ Add_ThrowsAnException_WhenQueuesCollectionIsNull
✅ Ctor_ThrowsAnException_WhenDefaultProviderIsNull
✅ Enumeration_ContainsAddedProvider
✅ Enumeration_IncludesTheDefaultProvider
✅ GetProvider_CanBeResolved_ByAnyQueue
✅ GetProvider_ReturnsTheDefaultProvider_WhenProviderCanNotBeResolvedByQueue
✅ Hangfire.PostgreSql.Tests.PostgreSqlConnectionFacts
✅ AcquireLock_ReturnsNonNullInstance
✅ AnnounceServer_CreatesOrUpdatesARecord
✅ AnnounceServer_ThrowsAnException_WhenContextIsNull
✅ AnnounceServer_ThrowsAnException_WhenServerIdIsNull
✅ CreateExpiredJob_CreatesAJobInTheStorage_AndSetsItsParameters
✅ CreateExpiredJob_EnlistsInTransaction(completeTransactionScope: False)
✅ CreateExpiredJob_EnlistsInTransaction(completeTransactionScope: True)
✅ CreateExpiredJob_ThrowsAnException_WhenJobIsNull
✅ CreateExpiredJob_ThrowsAnException_WhenParametersCollectionIsNull
✅ CreateWriteTransaction_ReturnsNonNullInstance
✅ Ctor_ThrowsAnException_WhenOptionsIsNull
✅ Ctor_ThrowsAnException_WhenStorageIsNull
✅ FetchNextJob_DelegatesItsExecution_ToTheQueue
✅ FetchNextJob_Throws_IfMultipleProvidersResolved
✅ GetAllEntriesFromHash_ReturnsAllKeysAndTheirValues
✅ GetAllEntriesFromHash_ReturnsNull_IfHashDoesNotExist
✅ GetAllEntriesFromHash_ThrowsAnException_WhenKeyIsNull
✅ GetAllItemsFromList_ReturnsAllItems_FromAGivenList
✅ GetAllItemsFromList_ReturnsAnEmptyList_WhenListDoesNotExist
✅ GetAllItemsFromList_ThrowsAnException_WhenKeyIsNull
✅ GetAllItemsFromSet_ReturnsAllItems
✅ GetAllItemsFromSet_ReturnsEmptyCollection_WhenKeyDoesNotExist
✅ GetAllItemsFromSet_ThrowsAnException_WhenKeyIsNull
✅ GetCounter_ReturnsSumOfValues_InCounterTable
✅ GetCounter_ReturnsZero_WhenKeyDoesNotExist
✅ GetCounter_ThrowsAnException_WhenKeyIsNull
✅ GetFirstByLowestScoreFromSet_List_ReturnsAllLowestValuesMatchingInputs
✅ GetFirstByLowestScoreFromSet_List_ReturnsEmpty_WhenNoValuesExistForKey
✅ GetFirstByLowestScoreFromSet_List_ReturnsEmpty_WhenTheKeyDoesNotExist
✅ GetFirstByLowestScoreFromSet_List_ReturnsSubsetOfLowestValuesMatchingInputs
✅ GetFirstByLowestScoreFromSet_List_ThrowsAnException_WhenCountIsLessThanOne(count: -1)
✅ GetFirstByLowestScoreFromSet_List_ThrowsAnException_WhenCountIsLessThanOne(count: 0)
✅ GetFirstByLowestScoreFromSet_List_ThrowsAnException_WhenKeyIsNull
✅ GetFirstByLowestScoreFromSet_List_ThrowsAnException_WhenToScoreIsLowerThanFromScore
✅ GetFirstByLowestScoreFromSet_ReturnsNull_WhenTheKeyDoesNotExist
✅ GetFirstByLowestScoreFromSet_ReturnsTheValueWithTheLowestScore
✅ GetFirstByLowestScoreFromSet_ThrowsAnException_ToScoreIsLowerThanFromScore
✅ GetFirstByLowestScoreFromSet_ThrowsAnException_WhenKeyIsNull
✅ GetHashCount_ReturnsNumber_OfHashFields
✅ GetHashCount_ReturnsZero_WhenKeyDoesNotExist
✅ GetHashCount_ThrowsAnException_WhenKeyIsNull
✅ GetHashTtl_ReturnsExpirationTimeForHash
✅ GetHashTtl_ReturnsNegativeValue_WhenHashDoesNotExist
✅ GetHashTtl_ThrowsAnException_WhenKeyIsNull
✅ GetJobData_ReturnsNull_WhenThereIsNoSuchJob
✅ GetJobData_ReturnsResult_WhenJobExists
✅ GetJobData_ThrowsAnException_WhenJobIdIsNull
✅ GetListCount_ReturnsTheNumberOfListElements
✅ GetListCount_ReturnsZero_WhenListDoesNotExist
✅ GetListCount_ThrowsAnException_WhenKeyIsNull
✅ GetListTtl_ReturnsExpirationTimeForList
✅ GetListTtl_ReturnsNegativeValue_WhenListDoesNotExist
✅ GetListTtl_ThrowsAnException_WhenKeyIsNull
✅ GetParameter_ReturnsNull_WhenParameterDoesNotExists
✅ GetParameter_ReturnsParameterValue_WhenJobExists
✅ GetParameter_ThrowsAnException_WhenJobIdIsNull
✅ GetParameter_ThrowsAnException_WhenNameIsNull
✅ GetRangeFromList_ReturnsAllEntries_WithinGivenBounds
✅ GetRangeFromList_ReturnsAnEmptyList_WhenListDoesNotExist
✅ GetRangeFromList_ThrowsAnException_WhenKeyIsNull
✅ GetRangeFromSet_ReturnsPagedElements
✅ GetRangeFromSet_ThrowsAnException_WhenKeyIsNull
✅ GetSetCount_ReturnsNumberOfElements_InASet
✅ GetSetCount_ReturnsZero_WhenSetDoesNotExist
✅ GetSetCount_ThrowsAnException_WhenKeyIsNull
✅ GetSetTtl_ReturnsExpirationTime_OfAGivenSet
✅ GetSetTtl_ReturnsNegativeValue_WhenSetDoesNotExist
✅ GetSetTtl_ThrowsAnException_WhenKeyIsNull
✅ GetStateData_ReturnsCorrectData
✅ GetStateData_ReturnsNull_IfThereIsNoSuchState
✅ GetStateData_ThrowsAnException_WhenJobIdIsNull
✅ GetValueFromHash_ReturnsNull_WhenHashDoesNotExist
✅ GetValueFromHash_ReturnsValue_OfAGivenField
✅ GetValueFromHash_ThrowsAnException_WhenKeyIsNull
✅ GetValueFromHash_ThrowsAnException_WhenNameIsNull
✅ Heartbeat_ThrowsAnException_WhenServerIdIsNull
✅ Heartbeat_ThrowsBackgroundServerGoneException_WhenServerDisappeared
✅ Heartbeat_UpdatesLastHeartbeat_OfTheServerWithGivenId
✅ RemoveServer_RemovesAServerRecord
✅ RemoveServer_ThrowsAnException_WhenServerIdIsNull
✅ RemoveTimedOutServers_DoItsWorkPerfectly
✅ RemoveTimedOutServers_ThrowsAnException_WhenTimeOutIsNegative
✅ SetParameter_CanAcceptNulls_AsValues
✅ SetParameter_ThrowsAnException_WhenJobIdIsNull
✅ SetParameter_ThrowsAnException_WhenNameIsNull
✅ SetParameter_UpdatesValue_WhenParameterWithTheGivenName_AlreadyExists
✅ SetParameters_CreatesNewParameter_WhenParameterWithTheGivenNameDoesNotExists
✅ SetRangeInHash_DoesNotThrowSerializationException
✅ SetRangeInHash_MergesAllRecords
✅ SetRangeInHash_ThrowsAnException_WhenKeyIsNull
✅ SetRangeInHash_ThrowsAnException_WhenKeyValuePairsArgumentIsNull
✅ Hangfire.PostgreSql.Tests.PostgreSqlDistributedLockFacts
✅ Acquire_AcquiresExclusiveApplicationLock_WithoutUseNativeDatabaseTransactions_OnSession
✅ Acquire_AcquiresExclusiveApplicationLock_WithUseNativeDatabaseTransactions_OnSession
✅ Acquire_AcquiresExclusiveApplicationLock_WithUseNativeDatabaseTransactions_OnSession_WhenDeadlockOccurs
✅ Acquire_ExpiredLockExists_LocksAnyway(useNativeDatabaseTransactions: False)
✅ Acquire_ExpiredLockExists_LocksAnyway(useNativeDatabaseTransactions: True)
✅ Acquire_ThrowsAnException_IfLockCanNotBeGranted_WithoutUseNativeDatabaseTransactions
✅ Acquire_ThrowsAnException_IfLockCanNotBeGranted_WithUseNativeDatabaseTransactions
✅ Acquire_ThrowsAnException_WhenConnectionIsNull
✅ Acquire_ThrowsAnException_WhenOptionsIsNull
✅ Acquire_ThrowsAnException_WhenResourceIsNullOrEmpty
✅ Dispose_ReleasesExclusiveApplicationLock_WithoutUseNativeDatabaseTransactions
✅ Dispose_ReleasesExclusiveApplicationLock_WithUseNativeDatabaseTransactions
✅ Hangfire.PostgreSql.Tests.PostgreSqlFetchedJobFacts
✅ Ctor_CorrectlySets_AllInstanceProperties
✅ Ctor_ThrowsAnException_WhenFetchedAtIsNull
✅ Ctor_ThrowsAnException_WhenJobIdIsNull
✅ Ctor_ThrowsAnException_WhenQueueIsNull
✅ Ctor_ThrowsAnException_WhenStorageIsNull
✅ Dispose_SetsFetchedAtValueToNull_IfThereWereNoCallsToComplete
✅ RemoveFromQueue_AfterTimer_RemovesJobFromTheQueue
✅ RemoveFromQueue_DoesNotDelete_UnrelatedJobs
✅ RemoveFromQueue_ReallyDeletesTheJobFromTheQueue
✅ Requeue_SetsFetchedAtValueToNull
✅ RequeueQueue_AfterTimer_SetsFetchedAtValueToNull
✅ Timer_UpdatesFetchedAtColumn
✅ Hangfire.PostgreSql.Tests.PostgreSqlInstallerFacts
✅ InstallingSchemaUpdatesVersionAndShouldNotThrowAnException
✅ InstallingSchemaWithCapitalsUpdatesVersionAndShouldNotThrowAnException
✅ Hangfire.PostgreSql.Tests.PostgreSqlJobQueueFacts
✅ Ctor_ThrowsAnException_WhenStorageIsNull
✅ Dequeue_ShouldFetchAJob_FromQueueWithHigherPriority
✅ Dequeue_ShouldFetchAJob_FromTheSpecifiedQueue_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchAJob_FromTheSpecifiedQueue_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchATimedOutJobs_FromTheSpecifiedQueue_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchATimedOutJobs_FromTheSpecifiedQueue_WithoutUseNativeDatabaseTransactionsAndSlidingInvisbility
✅ Dequeue_ShouldFetchATimedOutJobs_FromTheSpecifiedQueue_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchATimedOutJobs_FromTheSpecifiedQueue_WithUseNativeDatabaseTransactionsAndSlidingInvisbility
✅ Dequeue_ShouldFetchJobs_FromMultipleQueues_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchJobs_FromMultipleQueues_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchJobs_OnlyFromSpecifiedQueues_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldFetchJobs_OnlyFromSpecifiedQueues_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldLeaveJobInTheQueue_ButSetItsFetchedAtValue_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldLeaveJobInTheQueue_ButSetItsFetchedAtValue_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldSetFetchedAt_OnlyForTheFetchedJob_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldSetFetchedAt_OnlyForTheFetchedJob_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldThrowAnException_WhenQueuesCollectionIsEmpty_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldThrowAnException_WhenQueuesCollectionIsEmpty_WithUseNativeDatabaseTransactions
✅ Dequeue_ShouldThrowAnException_WhenQueuesCollectionIsNull
✅ Dequeue_ShouldWaitIndefinitely_WhenThereAreNoJobs_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ShouldWaitIndefinitely_WhenThereAreNoJobs_WithUseNativeDatabaseTransactions
✅ Dequeue_ThrowsOperationCanceled_WhenCancellationTokenIsSetAtTheBeginning_WithoutUseNativeDatabaseTransactions
✅ Dequeue_ThrowsOperationCanceled_WhenCancellationTokenIsSetAtTheBeginning_WithUseNativeDatabaseTransactions
✅ Enqueue_AddsAJobToTheQueue_WithoutUseNativeDatabaseTransactions
✅ Enqueue_AddsAJobToTheQueue_WithUseNativeDatabaseTransactions
✅ Queues_Can_Dequeue_On_Notification
✅ Queues_Can_Dequeue_On_Signal
✅ Queues_Should_Support_Long_Queue_Names
✅ Hangfire.PostgreSql.Tests.PostgreSqlMonitoringApiFacts
✅ GetJobs_MixedCasing_ReturnsJob
✅ HourlySucceededJobs_ReturnsAggregatedStats
✅ Hangfire.PostgreSql.Tests.PostgreSqlStorageFacts
✅ CanCreateAndOpenConnection_WithExistingConnectionFactory
✅ CanUseTransaction_WithDifferentTransactionIsolationLevel
✅ CreateAndOpenConnection_ThrowsAnException_WithExistingConnectionFactoryAndInvalidOptions
✅ Ctor_CanCreateSqlServerStorage_WithExistingConnection
✅ Ctor_CanCreateSqlServerStorage_WithExistingConnectionFactory
✅ Ctor_InitializesDefaultJobQueueProvider_AndPassesCorrectOptions
✅ Ctor_ThrowsAnException_WhenConnectionFactoryIsNull
✅ GetComponents_ReturnsAllNeededComponents
✅ GetMonitoringApi_ReturnsNonNullInstance
✅ HasFeature_ReturnsCorrectValues(featureName: "", expected: False)
✅ HasFeature_ReturnsCorrectValues(featureName: "Connection.BatchedGetFirstByLowestScoreFromSet", expected: True)
✅ HasFeature_ReturnsCorrectValues(featureName: "Job.Queue", expected: True)
✅ HasFeature_ReturnsCorrectValues(featureName: "Unsupported", expected: False)
✅ HasFeature_ThrowsAnException_WhenFeatureIsNull
✅ Hangfire.PostgreSql.Tests.PostgreSqlStorageOptionsFacts
✅ Ctor_SetsTheDefaultOptions
✅ Set_DistributedLockTimeout_SetsTheValue
✅ Set_DistributedLockTimeout_ShouldThrowAnException_WhenGivenIntervalIsEqualToZero
✅ Set_DistributedLockTimeout_ShouldThrowAnException_WhenGivenIntervalIsNegative
✅ Set_InvisibilityTimeout_SetsTheValue
✅ Set_InvisibilityTimeout_ShouldThrowAnException_WhenGivenIntervalIsEqualToZero
✅ Set_InvisibilityTimeout_ShouldThrowAnException_WhenGivenIntervalIsNegative
✅ Set_QueuePollInterval_SetsTheValue
✅ Set_QueuePollInterval_SetsTheValue_WhenGivenIntervalIsTooLow_ButIgnored
✅ Set_QueuePollInterval_ShouldThrowAnException_WhenGivenIntervalIsEqualToZero_EvenIfIgnored
✅ Set_QueuePollInterval_ShouldThrowAnException_WhenGivenIntervalIsTooLow
✅ Hangfire.PostgreSql.Tests.PostgreSqlWriteOnlyTransactionFacts
✅ AddJobState_JustAddsANewRecordInATable
✅ AddRangeToSet_AddsAllItems_ToAGivenSet
✅ AddRangeToSet_ThrowsAnException_WhenItemsValueIsNull
✅ AddRangeToSet_ThrowsAnException_WhenKeyIsNull
✅ AddToQueue_AddsAJobToTheQueue_UsingStorageConnection_WithTransactionScopeEnlistment
✅ AddToQueue_CallsEnqueue_OnTargetPersistentQueue
✅ AddToSet_AddsARecord_IfThereIsNo_SuchKeyAndValue
✅ AddToSet_AddsARecord_WhenKeyIsExists_ButValuesAreDifferent
✅ AddToSet_DoesNotAddARecord_WhenBothKeyAndValueAreExist
✅ AddToSet_DoesNotFailWithConcurrencyError_WhenRunningMultipleThreads
✅ AddToSet_WithScore_AddsARecordWithScore_WhenBothKeyAndValueAreNotExist
✅ AddToSet_WithScore_UpdatesAScore_WhenBothKeyAndValueAreExist
✅ Ctor_ThrowsAnException_IfDedicatedConnectionFuncIsNull
✅ Ctor_ThrowsAnException_IfStorageIsNull
✅ DecrementCounter_AddsRecordToCounterTable_WithNegativeValue
✅ DecrementCounter_WithExistingKey_AddsAnotherRecord
✅ DecrementCounter_WithExpiry_AddsARecord_WithExpirationTimeSet
✅ ExpireHash_SetsExpirationTimeOnAHash_WithGivenKey
✅ ExpireHash_ThrowsAnException_WhenKeyIsNull
✅ ExpireJob_SetsJobExpirationData
✅ ExpireList_SetsExpirationTime_OnAList_WithGivenKey
✅ ExpireList_ThrowsAnException_WhenKeyIsNull
✅ ExpireSet_SetsExpirationTime_OnASet_WithGivenKey
✅ ExpireSet_ThrowsAnException_WhenKeyIsNull
✅ IncrementCounter_AddsRecordToCounterTable_WithPositiveValue
✅ IncrementCounter_WithExistingKey_AddsAnotherRecord
✅ IncrementCounter_WithExpiry_AddsARecord_WithExpirationTimeSet
✅ InsertToList_AddsAnotherRecord_WhenBothKeyAndValueAreExist
✅ InsertToList_AddsARecord_WithGivenValues
✅ PersistHash_ClearsExpirationTime_OnAGivenHash
✅ PersistHash_ThrowsAnException_WhenKeyIsNull
✅ PersistJob_ClearsTheJobExpirationData
✅ PersistList_ClearsExpirationTime_OnAGivenHash
✅ PersistList_ThrowsAnException_WhenKeyIsNull
✅ PersistSet_ClearsExpirationTime_OnAGivenHash
✅ PersistSet_ThrowsAnException_WhenKeyIsNull
✅ RemoveFromList_DoesNotRemoveRecords_WithSameKey_ButDifferentValue
✅ RemoveFromList_DoesNotRemoveRecords_WithSameValue_ButDifferentKey
✅ RemoveFromList_RemovesAllRecords_WithGivenKeyAndValue
✅ RemoveFromSet_DoesNotRemoveRecord_WithSameKey_AndDifferentValue
✅ RemoveFromSet_DoesNotRemoveRecord_WithSameValue_AndDifferentKey
✅ RemoveFromSet_RemovesARecord_WithGivenKeyAndValue
✅ RemoveHash_RemovesAllHashRecords
✅ RemoveHash_ThrowsAnException_WhenKeyIsNull
✅ RemoveSet_RemovesASet_WithAGivenKey
✅ RemoveSet_ThrowsAnException_WhenKeyIsNull
✅ SetJobState_AppendsAStateAndSetItToTheJob
✅ SetJobState_EnlistsInAmbientTransaction(completeTransactionScope: False)
✅ SetJobState_EnlistsInAmbientTransaction(completeTransactionScope: True)
✅ SetRangeInHash_MergesAllRecords
✅ SetRangeInHash_ThrowsAnException_WhenKeyIsNull
✅ SetRangeInHash_ThrowsAnException_WhenKeyValuePairsArgumentIsNull
✅ TrimList_RemovesAllRecords_IfStartFromGreaterThanEndingAt
✅ TrimList_RemovesAllRecords_WhenStartingFromValue_GreaterThanMaxElementIndex
✅ TrimList_RemovesRecords_OnlyOfAGivenKey
✅ TrimList_RemovesRecordsToEnd_IfKeepAndingAt_GreaterThanMaxElementIndex
✅ TrimList_TrimsAList_ToASpecifiedRange
Loading