Sorry I didn't explain the issue very well. I've managed to figure out what was happening. Basicially we had two separate databases Shout (top layer) and Survey (module). Sqlite was destroying /overwriting the module later in this use case.
Can you please confirm that this is the correct way to resolve the issue? If it is then it should probably be documented in your Integration Test setup section.
#ShoutEntityFrameworkCoreTestModule.cs
namespace Shout.EntityFrameworkCore;
[DependsOn(
typeof(ShoutEntityFrameworkCoreDbMigrationsModule),
typeof(ShoutTestBaseModule),
typeof(AbpEntityFrameworkCoreSqliteModule)
)]
public class ShoutEntityFrameworkCoreTestModule : AbpModule
{
private SqliteConnection _sqliteConnection;
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAlwaysDisableUnitOfWorkTransaction();
ConfigureInMemorySqlite(context.Services);
}
private void ConfigureInMemorySqlite(IServiceCollection services)
{
_sqliteConnection = CreateDatabaseAndGetConnection();
services.Configure<AbpDbContextOptions>(options =>
{
options.Configure(context =>
{
context.DbContextOptions.UseSqlite(_sqliteConnection);
});
});
}
public override void OnApplicationShutdown(ApplicationShutdownContext context)
{
_sqliteConnection.Dispose();
}
private static SqliteConnection CreateDatabaseAndGetConnection()
{
var connection = new SqliteConnection("Data Source=:memory:");
connection.Open();
// Configure logging for SurveyDbContext
var surveyDbOptions = new DbContextOptionsBuilder<SurveyDbContext>()
.UseSqlite(connection)
.EnableSensitiveDataLogging() // Include parameter values in logs
.LogTo(Console.WriteLine, LogLevel.Information) // Log SQL queries to console
.Options;
// Configure logging for ShoutMigrationsDbContext
var shoutMigrationsDbOptions = new DbContextOptionsBuilder<ShoutMigrationsDbContext>()
.UseSqlite(connection)
.EnableSensitiveDataLogging()
.LogTo(Console.WriteLine, LogLevel.Information)
.Options;
// Create tables with logging enabled
new SurveyDbContext(surveyDbOptions).GetService<IRelationalDatabaseCreator>().CreateTables();
new ShoutMigrationsDbContext(shoutMigrationsDbOptions).GetService<IRelationalDatabaseCreator>().CreateTables();
return connection;
}
}
We have a project with a parent later and multiple sub-modules.
The tests in the sub-modules run just OK using the supplied sqlite seeder.
When I try to run the tests in the parent application layer I'm getting issues though as the underlying database schema has not been created.
To fix this I added a DependsOn --- typeof(MySubModuleTestBaseModule) and referenced the sub-test project. Unfortunatle whilst the sub-module seeder runs it errors due to the tables not exsiting despote being entities.
Please explain how theses tests are supposed to be linked up and how I correct this.
There is no documentation on this at all, only for the tests in a module.
[22:11:43 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
I installed the new ABP cli beta onto a fresh computer. Logged in ok but then when building I got an error about the license.
I've now uninstalled the beta, and installed the old 8.2.0 version but I still cannot run the projects correctly without that message above appearing many times during the run.
I have tried abp logout, I've reinstalled, logged in using password and again using the device method. I have cleaned and rebuilt the project. always the same message.
I also tried deleting the .abp folder manually and reinstalling. didn't help. abp login-info shows I am logged in correctly.
Also I've tried logging out and back in again. no different.
I've tried uninstalling and reinstalling version 7.2. no different.
I've installed the abp suite, when I run it I also get the license error, however in the top right licence menu I get this.
How about integrating an adapter for integration services like Zappier, automate, pabbly connect?
Your feature request thread was auto closed btw.
We love the framework but support and bug reporting is not handled well. My developer has mostly given up reporting issues as he says it's not worth it as responses tend to be one line, minimum effort answers. Complex issues often just get auto-closed without resolution.
I don't mind the one line answers but they should not be considered a paid response to an issue when we only get to report 15 a year. Basic forum responses should not be included in any limit.
I would suggest you take a look at how service stack (https://forums.servicestack.net/) handle this for a fraction of the price. With a unlimited support forum for paid users with a smaller number of private escalated incidents.
There is very little in the commercial package we use as we have our own UI framework, we're basically just paying for the support forum.
The point is that this is the wrong way around, and I'm guessing by mistake, not by design.
Specific items would always override group permissions. To use a file system as an example, a file permission would override the inherited folder permission. With ABP you have it the other way around which has no use case that I can see.
It should be:
Tenant default permissions are inherited from Edition, but permissions set on the tenant are not overwritten by Edition.
Example. If a feature is causing an issue for a specific customer, we would disable it on their tenant, not the entire edition.
I've been in contact with the author of Rebus and they've confirmed to me that the behaviour is intended.
Connection errors bubble up to the calling app (in this case ABP) and any retry logic needs to be handled there.
https://github.com/rebus-org/Rebus.RabbitMq/issues/98#
If you follow your own link then you will see that the issue was moved to the following issue and then marked as Completed
https://github.com/rebus-org/Rebus.RabbitMq/issues/3
Currently our application fails every time the server is rebooted and there doesn't appear to be any obvious way to correct this from our side.
Is there no way to put a short say 5 second delay and retry loop into the rebus setup code?