Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/hangfire/add feature job filter #34

Merged
merged 2 commits into from
Feb 8, 2024

Conversation

fb-smit
Copy link
Contributor

@fb-smit fb-smit commented Feb 5, 2024

No description provided.

reworked: UniquePerQueueAttribute, so it does a deep compare of the jobs method parameters
added: JobCleanupExpirationTimeAttribute to be able to control how long job results are kept until deletion
added: documentation about the new attributes and filters
added: unit tests for new features and improved coverage on existing code
Copy link

github-actions bot commented Feb 5, 2024

Test Results

 18 files  ± 0   18 suites  ±0   30s ⏱️ -1s
352 tests +15  345 ✅ +15  7 💤 ±0  0 ❌ ±0 
353 runs  +15  346 ✅ +15  7 💤 ±0  0 ❌ ±0 

Results for commit 6a0e183. ± Comparison against base commit 0ad9719.

This pull request removes 5 and adds 20 tests. Note that renamed tests count towards both.
PiBox.Plugins.Jobs.Hangfire.Tests.UniquePerQueueAttributeTests ‑ DoesNotRemoveItself
PiBox.Plugins.Jobs.Hangfire.Tests.UniquePerQueueAttributeTests ‑ DoesNothingOnWrongState
PiBox.Plugins.Jobs.Hangfire.Tests.UniquePerQueueAttributeTests ‑ RemovesTheDuplicateFromEnqueuedOnes
PiBox.Plugins.Jobs.Hangfire.Tests.UniquePerQueueAttributeTests ‑ RemovesTheDuplicateFromProcessingOnes
PiBox.Plugins.Jobs.Hangfire.Tests.UniquePerQueueAttributeTests ‑ RemovesTheDuplicateFromScheduledOnes
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.EnabledByFeatureFilterTests ‑ JobIsCancelledWhenMatchingFeatureIsDisabled
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.EnabledByFeatureFilterTests ‑ JobIsCancelledWhenThereIsNoMatchingFeature
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.EnabledByFeatureFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.HostAuthorizationFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled("example.com","example.com",True)
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.HostAuthorizationFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled("example.com","localhost",False)
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.HostAuthorizationFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled("localhost","localhost",True)
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.HostAuthorizationFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled("localhost1","localhost",False)
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.JobCleanupExpirationTimeAttributeTests ‑ JobExpirationTimeoutIsAppliedCorrectly
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.LogJobExecutionFilterTests ‑ JobIsNotCancelledWhenMatchingFeatureIsEnabled
PiBox.Plugins.Jobs.Hangfire.Tests.Attributes.UniquePerQueueAttributeTests ‑ DoesNotRemoveItself
…

Copy link

github-actions bot commented Feb 5, 2024

.NET Code Coverage

Coverage Type Threshold Actual Coverage Status
Line 80% 97% Generic badge
Branch 0% 0% N/A

Code Coverage Summary

Code Coverage Details
Generated on: 02/05/2024 - 14:46:08
Parser: MultiReportParser (13x DynamicCodeCoverageParser)
Assemblies: 19
Classes: 151
Files: 137
Covered lines: 2670
Uncovered lines: 80
Coverable lines: 2750
Total lines: 6270
Line coverage: 97% (2670 of 2750)
Tag: 56_7786216631
Name Covered Uncovered Coverable Total Line coverage
PiBox.Api.OpenApi.dll 154 0 154 387 100%
PiBox.Api.OpenApi.Filters.Document.ValueObjectDocumentFilter 17 0 17 39 100%
PiBox.Api.OpenApi.Filters.Operation.FormFileFilter 21 0 21 34 100%
PiBox.Api.OpenApi.Filters.Schema.ReadOnlyPropertySchemaFilter 6 0 6 23 100%
PiBox.Api.OpenApi.Filters.Schema.ValueObjectSchemaFilter 47 0 47 95 100%
PiBox.Api.OpenApi.OpenApiConfiguration 4 0 4 98 100%
PiBox.Api.OpenApi.OpenApiPlugin 59 0 59 98 100%
PiBox.Extensions.Abstractions.dll 36 2 38 83 94.7%
PiBox.Extensions.Abstractions.CurrencyValue 10 0 10 18 100%
PiBox.Extensions.Abstractions.Page 15 1 16 36 93.7%
PiBox.Extensions.Abstractions.PagedList 8 1 9 17 88.8%
PiBox.Extensions.Abstractions.PagingRequest 1 0 1 4 100%
PiBox.Extensions.Abstractions.Quantity 1 0 1 4 100%
PiBox.Extensions.Abstractions.QuantityCount 1 0 1 4 100%
PiBox.Extensions.RestEase.dll 95 0 95 225 100%
PiBox.Extensions.RestEase.Authentication.AuthenticationConfig 8 0 8 14 100%
PiBox.Extensions.RestEase.Authentication.AuthHandler 42 0 42 78 100%
PiBox.Extensions.RestEase.Authentication.OAuth2Model 10 0 10 30 100%
PiBox.Extensions.RestEase.RestClientFactory 15 0 15 36 100%
PiBox.Extensions.RestEase.RestClientMessageHandler 20 0 20 67 100%
PiBox.Hosting.Abstractions.dll 245 6 251 755 97.6%
PiBox.Hosting.Abstractions.Attributes.ConfigurationAttribute 6 0 6 20 100%
PiBox.Hosting.Abstractions.Attributes.HealthCheckAttribute 6 0 6 15 100%
PiBox.Hosting.Abstractions.Attributes.LivenessCheckAttribute 3 0 3 10 100%
PiBox.Hosting.Abstractions.Attributes.MiddlewareAttribute 4 0 4 13 100%
PiBox.Hosting.Abstractions.Attributes.ReadinessCheckAttribute 3 0 3 10 100%
PiBox.Hosting.Abstractions.Configuration.EnvConfigurationExtensions 1 0 1 40 100%
PiBox.Hosting.Abstractions.Configuration.EnvConfigurationProvider 12 1 13 40 92.3%
PiBox.Hosting.Abstractions.Configuration.EnvConfigurationSource 1 0 1 40 100%
PiBox.Hosting.Abstractions.DependencyInjection.Factory 6 0 6 26 100%
PiBox.Hosting.Abstractions.Exceptions.ConflictPiBoxException 3 0 3 12 100%
PiBox.Hosting.Abstractions.Exceptions.NotFoundPiBoxException 5 3 8 21 62.5%
PiBox.Hosting.Abstractions.Exceptions.PiBoxException 13 0 13 26 100%
PiBox.Hosting.Abstractions.Exceptions.ValidationPiBoxException 8 0 8 20 100%
PiBox.Hosting.Abstractions.Extensions.ConfigurationExtensions 3 0 3 14 100%
PiBox.Hosting.Abstractions.Extensions.ImplementationResolverExtensions 8 0 8 20 100%
PiBox.Hosting.Abstractions.Extensions.PluginActivateableExtensions 7 0 7 25 100%
PiBox.Hosting.Abstractions.Extensions.SerializationExtensions 48 0 48 101 100%
PiBox.Hosting.Abstractions.Extensions.TypeExtensions 26 1 27 46 96.2%
PiBox.Hosting.Abstractions.GlobalStatusCodeOptions 17 0 17 46 100%
PiBox.Hosting.Abstractions.Metrics.Metrics 16 0 16 69 100%
PiBox.Hosting.Abstractions.Middlewares.EnrichRequestMetricsMiddleware 8 0 8 26 100%
PiBox.Hosting.Abstractions.Middlewares.ExceptionMiddleware 26 0 26 54 100%
PiBox.Hosting.Abstractions.Middlewares.Models.ErrorResponse 1 0 1 4 100%
PiBox.Hosting.Abstractions.Middlewares.Models.FieldValidationError 1 0 1 4 100%
PiBox.Hosting.Abstractions.Middlewares.Models.ValidationErrorResponse 4 1 5 15 80%
PiBox.Hosting.Abstractions.Middlewares.RequestContentLengthLimitMiddleware 9 0 9 38 100%
PiBox.Hosting.WebHost.dll 541 16 557 1159 97.1%
PiBox.Hosting.WebHost.Configurators.AppConfigurator 51 0 51 95 100%
PiBox.Hosting.WebHost.Configurators.HostConfigurator 37 2 39 79 94.8%
PiBox.Hosting.WebHost.Configurators.ServiceConfigurator 169 0 169 267 100%
PiBox.Hosting.WebHost.Extensions.CorsPolicyExtensions 7 0 7 17 100%
PiBox.Hosting.WebHost.Extensions.PluginExtensions 8 0 8 19 100%
PiBox.Hosting.WebHost.Extensions.SystemExtensions 5 0 5 15 100%
PiBox.Hosting.WebHost.Formatters.CustomMediaTypes 4 0 4 14 100%
PiBox.Hosting.WebHost.Formatters.YamlInputFormatter 14 0 14 34 100%
PiBox.Hosting.WebHost.Formatters.YamlOutputFormatter 12 0 12 26 100%
PiBox.Hosting.WebHost.Logging.GelfJsonFormatter 46 0 46 88 100%
PiBox.Hosting.WebHost.Logging.LoggingMetricSink 2 5 7 22 28.5%
PiBox.Hosting.WebHost.Logging.OpentelemetryTraceEnricher 21 0 21 49 100%
PiBox.Hosting.WebHost.Logging.RemovePropertiesEnricher 4 0 4 16 100%
PiBox.Hosting.WebHost.Logging.StructuredLoggingExtensions 80 1 81 228 98.7%
PiBox.Hosting.WebHost.PluginWebHostBuilder 46 2 48 97 95.8%
PiBox.Hosting.WebHost.Services.TypeImplementationResolver 35 6 41 93 85.3%
PiBox.Plugins.Authorization.Abstractions.dll 9 9 18 50 50%
PiBox.Plugins.Authorization.Abstractions.AuthPolicy 0 2 2 15 0%
PiBox.Plugins.Authorization.Abstractions.PolicyExtensions 9 7 16 35 56.2%
PiBox.Plugins.Authorization.Keycloak.dll 151 6 157 390 96.1%
PiBox.Plugins.Authorization.Keycloak.KeycloakPlugin 31 0 31 67 100%
PiBox.Plugins.Authorization.Keycloak.KeycloakPluginConfiguration 8 2 10 30 80%
PiBox.Plugins.Authorization.Keycloak.RealmsConfig 2 0 2 30 100%
PiBox.Plugins.Authorization.Keycloak.Scheme.ClaimsPrincipalExtensions 20 0 20 44 100%
PiBox.Plugins.Authorization.Keycloak.Scheme.KeycloakAuthenticationHandler 57 1 58 121 98.2%
PiBox.Plugins.Authorization.Keycloak.Scheme.KeycloakDefaults 3 3 6 24 50%
PiBox.Plugins.Authorization.Keycloak.Scheme.PublicKeyService 30 0 30 74 100%
PiBox.Plugins.Endpoints.RestResourceEntity.dll 141 1 142 364 99.2%
PiBox.Plugins.Endpoints.RestResourceEntity.Endpoints.RestActions 18 0 18 69 100%
PiBox.Plugins.Endpoints.RestResourceEntity.Endpoints.RestSimpleResourceEndpointBuilder 83 0 83 166 100%
PiBox.Plugins.Endpoints.RestResourceEntity.Endpoints.RestSimpleResourceEndpointConfiguration 23 1 24 69 95.8%
PiBox.Plugins.Endpoints.RestResourceEntity.Extensions.RestSimpleResourceEntityEndpointExtensions 2 0 2 16 100%
PiBox.Plugins.Endpoints.RestResourceEntity.GlobalResponseOptions 13 0 13 31 100%
PiBox.Plugins.Endpoints.RestResourceEntity.RestResourceEntityPlugin 2 0 2 13 100%
PiBox.Plugins.Handlers.Abstractions.Cqrs.dll 6 0 6 21 100%
PiBox.Plugins.Handlers.Abstractions.Cqrs.Models.GuidIdentifier 5 0 5 12 100%
PiBox.Plugins.Handlers.Abstractions.Cqrs.Validators.GenericValidator 1 0 1 9 100%
PiBox.Plugins.Handlers.Cqrs.dll 107 1 108 446 99%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.CqrsSimpleResourcePlugin 23 0 23 55 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceCreateHandler 5 0 5 30 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceCreateHandler 5 0 5 30 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceDeleteHandler 5 0 5 30 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceDeleteHandler 5 0 5 30 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceGetHandler 5 0 5 31 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceGetHandler 5 0 5 31 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceGetListHandler 9 0 9 37 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceGetListHandler 5 0 5 37 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceUpdateHandler 7 1 8 34 87.5%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Handlers.SimpleResourceUpdateHandler 5 0 5 34 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Validators.GuidIdentifierValidator 2 0 2 13 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Validators.PagingRequestValidator 17 0 17 31 100%
PiBox.Plugins.Handlers.Cqrs.SimpleResource.Validators.ValidationExtensions 9 0 9 23 100%
PiBox.Plugins.Jobs.Hangfire.dll 297 4 301 686 98.6%
PiBox.Plugins.Jobs.Hangfire.Attributes.EnabledByFeatureFilter 12 0 12 37 100%
PiBox.Plugins.Jobs.Hangfire.Attributes.JobCleanupExpirationTimeAttribute 7 0 7 27 100%
PiBox.Plugins.Jobs.Hangfire.Attributes.LogJobExecutionFilter 9 0 9 28 100%
PiBox.Plugins.Jobs.Hangfire.Attributes.RecurringJobAttribute 4 0 4 13 100%
PiBox.Plugins.Jobs.Hangfire.Attributes.UniquePerQueueAttribute 46 0 46 95 100%
PiBox.Plugins.Jobs.Hangfire.HangfireConfiguration 11 0 11 20 100%
PiBox.Plugins.Jobs.Hangfire.HangfireExtensions 2 0 2 13 100%
PiBox.Plugins.Jobs.Hangfire.HangFirePlugin 65 0 65 118 100%
PiBox.Plugins.Jobs.Hangfire.HangfireStatisticsMetricsReporter 37 0 37 82 100%
PiBox.Plugins.Jobs.Hangfire.Job.AsyncHangfireJob 9 0 9 27 100%
PiBox.Plugins.Jobs.Hangfire.Job.AsyncJob 15 0 15 30 100%
PiBox.Plugins.Jobs.Hangfire.Job.HangfireJob 4 4 8 27 50%
PiBox.Plugins.Jobs.Hangfire.Job.JobDetailCollection 44 0 44 91 100%
PiBox.Plugins.Jobs.Hangfire.Job.JobDetails 7 0 7 13 100%
PiBox.Plugins.Jobs.Hangfire.Job.JobRegistrationBuilder 7 0 7 24 100%
PiBox.Plugins.Jobs.Hangfire.Job.ParameterizedAsyncJob 16 0 16 31 100%
PiBox.Plugins.Jobs.Hangfire.JobOptions 2 0 2 10 100%
PiBox.Plugins.Management.Unleash.dll 136 10 146 337 93.1%
PiBox.Plugins.Management.Unleash.SystemTextSerializer 8 6 14 37 57.1%
PiBox.Plugins.Management.Unleash.UnleashConfiguration 6 0 6 15 100%
PiBox.Plugins.Management.Unleash.UnleashFeatureDefinitionProvider 34 1 35 79 97.1%
PiBox.Plugins.Management.Unleash.UnleashFilter 20 0 20 51 100%
PiBox.Plugins.Management.Unleash.UnleashMiddlware 19 0 19 47 100%
PiBox.Plugins.Management.Unleash.UnleashPlugin 49 3 52 108 94.2%
PiBox.Plugins.Messaging.Kafka.Flow.dll 268 23 291 742 92%
PiBox.Plugins.Messaging.Kafka.Flow.DefaultConsumerConfig 6 0 6 22 100%
PiBox.Plugins.Messaging.Kafka.Flow.DefaultProducerConfig 6 0 6 23 100%
PiBox.Plugins.Messaging.Kafka.Flow.Handlers.DltMessageHandler 22 0 22 59 100%
PiBox.Plugins.Messaging.Kafka.Flow.Handlers.DltMessageHandler<TMessage, TDeadLetterMessage> 6 0 6 59 100%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaDebugLoggingMiddleware 0 19 19 43 0%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaFlowBuilder 60 0 60 125 100%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaFlowBuilderExtensions 4 0 4 21 100%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaFlowServiceExtensions 61 0 61 119 100%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaFlowStatisticsMetricsReporter 49 2 51 98 96%
PiBox.Plugins.Messaging.Kafka.Flow.KafkaHealthCheck 21 2 23 52 91.3%
PiBox.Plugins.Messaging.Kafka.Flow.ProtobufTypeNameResolver 33 0 33 121 100%
PiBox.Plugins.Persistence.Abstractions.dll 68 2 70 185 97.1%
PiBox.Plugins.Persistence.Abstractions.Exceptions.QueryOptionsException 1 0 1 7 100%
PiBox.Plugins.Persistence.Abstractions.IBlobStorage 0 2 2 16 0%
PiBox.Plugins.Persistence.Abstractions.QueryableExtensions 14 0 14 46 100%
PiBox.Plugins.Persistence.Abstractions.QueryOptions 53 0 53 116 100%
PiBox.Plugins.Persistence.EntityFramework.dll 129 0 129 381 100%
PiBox.Plugins.Persistence.EntityFramework.DependencyInjectionExtensions 13 0 13 42 100%
PiBox.Plugins.Persistence.EntityFramework.EntityFrameworkPlugin 14 0 14 36 100%
PiBox.Plugins.Persistence.EntityFramework.EntityFrameworkRepository 47 0 47 88 100%
PiBox.Plugins.Persistence.EntityFramework.EntityFrameworkRepository 6 0 6 88 100%
PiBox.Plugins.Persistence.EntityFramework.IDbContext 4 0 4 22 100%
PiBox.Plugins.Persistence.EntityFramework.MetricsObserver 45 0 45 105 100%
PiBox.Plugins.Persistence.InMemory.dll 59 0 59 123 100%
PiBox.Plugins.Persistence.InMemory.InMemoryPlugin 4 0 4 16 100%
PiBox.Plugins.Persistence.InMemory.InMemoryRepository 53 0 53 96 100%
PiBox.Plugins.Persistence.InMemory.InMemoryStore 2 0 2 11 100%
PiBox.Plugins.Persistence.MongoDb.dll 148 0 148 551 100%
PiBox.Plugins.Persistence.MongoDb.MongoDbConfiguration 6 0 6 98 100%
PiBox.Plugins.Persistence.MongoDb.MongoDbInstance 37 0 37 98 100%
PiBox.Plugins.Persistence.MongoDb.MongoDbPlugin 18 0 18 41 100%
PiBox.Plugins.Persistence.MongoDb.MongoRepository 44 0 44 108 100%
PiBox.Plugins.Persistence.MongoDb.MongoRepository 19 0 19 108 100%
PiBox.Plugins.Persistence.MongoDb.SnakeCase 2 0 2 98 100%
System.Text.RegularExpressions.Generated.<RegexGenerator_g>F6DD43EEA644F37FBD420BF6C4F76D7CBF00A201A3A5DFAA2DE4DAED4B5EFB477__SnakeCaseRegex_0 22 0 22 0 100%
PiBox.Plugins.Persistence.S3.dll 50 0 50 120 100%
PiBox.Plugins.Persistence.S3.S3BlobContent 2 0 2 10 100%
PiBox.Plugins.Persistence.S3.S3BlobStorage 24 0 24 50 100%
PiBox.Plugins.Persistence.S3.S3Configuration 5 0 5 14 100%
PiBox.Plugins.Persistence.S3.S3Plugin 19 0 19 46 100%
PiBox.Plugins.Persistence.Smb.dll 30 0 30 86 100%
PiBox.Plugins.Persistence.Smb.SmbStorageConfiguration 9 0 9 20 100%
PiBox.Plugins.Persistence.Smb.SmbStorageExtensions 19 0 19 52 100%
PiBox.Plugins.Persistence.Smb.SmbStoragePlugin 2 0 2 14 100%

@fb-smit fb-smit added documentation Improvements or additions to documentation enhancement New feature or request labels Feb 8, 2024
Copy link
Contributor

@lukas-kd lukas-kd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@lukas-kd lukas-kd merged commit 8ab4bb9 into main Feb 8, 2024
5 checks passed
@lukas-kd lukas-kd deleted the feature/hangfire/add-feature-job-filter branch February 8, 2024 09:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants