Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
5dcb72a4
Commit
5dcb72a4
authored
Dec 04, 2019
by
Savorboard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix mysql unit tests
parent
66b9eb98
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
164 additions
and
94 deletions
+164
-94
CAP.EFOptions.cs
src/DotNetCore.CAP.MySql/CAP.EFOptions.cs
+1
-1
CAP.MySqlOptions.cs
src/DotNetCore.CAP.MySql/CAP.MySqlOptions.cs
+5
-8
DatabaseTestHost.cs
test/DotNetCore.CAP.MySql.Test/DatabaseTestHost.cs
+2
-1
DotNetCore.CAP.MySql.Test.csproj
...otNetCore.CAP.MySql.Test/DotNetCore.CAP.MySql.Test.csproj
+6
-17
MySqlStorageConnectionTest.cs
test/DotNetCore.CAP.MySql.Test/MySqlStorageConnectionTest.cs
+49
-57
TestHost.cs
test/DotNetCore.CAP.MySql.Test/TestHost.cs
+9
-10
MessageExtensionTest.cs
test/DotNetCore.CAP.Test/MessageExtensionTest.cs
+92
-0
No files found.
src/DotNetCore.CAP.MySql/CAP.EFOptions.cs
View file @
5dcb72a4
...
...
@@ -23,6 +23,6 @@ namespace DotNetCore.CAP
/// <summary>
/// Data version
/// </summary>
internal
string
Version
{
get
;
set
;
}
internal
string
Version
{
get
;
set
;
}
=
"v1"
;
}
}
\ No newline at end of file
src/DotNetCore.CAP.MySql/CAP.MySqlOptions.cs
View file @
5dcb72a4
...
...
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Options
;
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
{
public
class
MySqlOptions
:
EFOptions
...
...
@@ -28,14 +29,10 @@ namespace DotNetCore.CAP
{
if
(
options
.
DbContextType
!=
null
)
{
using
(
var
scope
=
_serviceScopeFactory
.
CreateScope
())
{
var
provider
=
scope
.
ServiceProvider
;
using
(
var
dbContext
=
(
DbContext
)
provider
.
GetRequiredService
(
options
.
DbContextType
))
{
options
.
ConnectionString
=
dbContext
.
Database
.
GetDbConnection
().
ConnectionString
;
}
}
using
var
scope
=
_serviceScopeFactory
.
CreateScope
();
var
provider
=
scope
.
ServiceProvider
;
using
var
dbContext
=
(
DbContext
)
provider
.
GetRequiredService
(
options
.
DbContextType
);
options
.
ConnectionString
=
dbContext
.
Database
.
GetDbConnection
().
ConnectionString
;
}
}
}
...
...
test/DotNetCore.CAP.MySql.Test/DatabaseTestHost.cs
View file @
5dcb72a4
using
System.Threading
;
using
Dapper
;
using
DotNetCore.CAP.Persistence
;
namespace
DotNetCore.CAP.MySql.Test
{
...
...
@@ -30,7 +31,7 @@ namespace DotNetCore.CAP.MySql.Test
{
using
(
CreateScope
())
{
var
storage
=
GetService
<
MySqlStorage
>();
var
storage
=
GetService
<
IStorageInitializer
>();
var
token
=
new
CancellationTokenSource
().
Token
;
CreateDatabase
();
storage
.
InitializeAsync
(
token
).
GetAwaiter
().
GetResult
();
...
...
test/DotNetCore.CAP.MySql.Test/DotNetCore.CAP.MySql.Test.csproj
View file @
5dcb72a4
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp
2.1
</TargetFramework>
<TargetFramework>netcoreapp
3.0
</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
...
...
@@ -11,22 +11,11 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="1.60.6" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
<PackageReference Include="Moq" Version="4.10.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<PackageReference Include="Moq" Version="4.10.1" />
</ItemGroup>
</Project>
\ No newline at end of file
test/DotNetCore.CAP.MySql.Test/MySqlStorageConnectionTest.cs
View file @
5dcb72a4
using
System
;
using
System
.Collections.Generic
;
using
System.Threading.Tasks
;
using
Dapper
;
using
DotNetCore.CAP.Infrastructure
;
using
DotNetCore.CAP.Internal
;
using
DotNetCore.CAP.Messages
;
using
DotNetCore.CAP.Persistence
;
using
Microsoft.Extensions.Options
;
using
Xunit
;
...
...
@@ -11,86 +11,78 @@ namespace DotNetCore.CAP.MySql.Test
[
Collection
(
"MySql"
)]
public
class
MySqlStorageConnectionTest
:
DatabaseTestHost
{
private
MySqlStorageConnection
_storage
;
private
readonly
MySqlDataStorage
_storage
;
public
MySqlStorageConnectionTest
()
{
var
options
=
GetService
<
IOptions
<
MySqlOptions
>>();
var
capOptions
=
GetService
<
IOptions
<
CapOptions
>>();
_storage
=
new
MySqlStorageConnection
(
options
,
capOptions
);
var
initializer
=
GetService
<
IStorageInitializer
>();
_storage
=
new
MySqlDataStorage
(
options
,
capOptions
,
initializer
);
}
[
Fact
]
public
async
Task
GetPublishedMessageAsync_
Test
()
public
async
Task
StorageMessage
Test
()
{
var
sql
=
"INSERT INTO `cap.published`(`Id`,`Version`,`Name`,`Content`,`Retries`,`Added`,`ExpiresAt`,`StatusName`) VALUES(@Id,'v1',@Name,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"
;
var
insertedId
=
SnowflakeId
.
Default
().
NextId
();
var
publishMessage
=
new
CapPublishedMessage
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
Id
=
insertedId
,
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
StatusName
=
StatusName
.
Scheduled
[
Headers
.
MessageId
]
=
msgId
};
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
())
{
await
connection
.
ExecuteAsync
(
sql
,
publishMessage
);
}
var
message
=
await
_storage
.
GetPublishedMessageAsync
(
insertedId
);
Assert
.
NotNull
(
message
);
Assert
.
Equal
(
"MySqlStorageConnectionTest"
,
message
.
Name
);
Assert
.
Equal
(
StatusName
.
Scheduled
,
message
.
StatusName
);
var
message
=
new
Message
(
header
,
null
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
Assert
.
NotNull
(
mdMessage
);
}
[
Fact
]
public
void
StoreReceivedMessageAsync_
Test
()
public
async
Task
StoreReceivedMessage
Test
()
{
var
receivedMessage
=
new
CapReceivedMessage
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
Id
=
SnowflakeId
.
Default
().
NextId
(),
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
Group
=
"mygroup"
,
StatusName
=
StatusName
.
Scheduled
[
Headers
.
MessageId
]
=
msgId
};
var
message
=
new
Message
(
header
,
null
);
Exception
exception
=
null
;
try
{
_storage
.
StoreReceivedMessage
(
receivedMessage
);
}
catch
(
Exception
ex
)
{
exception
=
ex
;
}
Assert
.
Null
(
exception
);
var
mdMessage
=
await
_storage
.
StoreReceivedMessageAsync
(
"test.name"
,
"test.group"
,
message
);
Assert
.
NotNull
(
mdMessage
);
}
[
Fact
]
public
async
Task
StoreReceivedExceptionMessageTest
()
{
await
_storage
.
StoreReceivedExceptionMessageAsync
(
"test.name"
,
"test.group"
,
""
);
}
[
Fact
]
public
async
Task
GetReceivedMessageAsync_
Test
()
public
async
Task
ChangePublishState
Test
()
{
var
sql
=
$@"
INSERT INTO `cap.received`(`Id`,`Version`,`Name`,`Group`,`Content`,`Retries`,`Added`,`ExpiresAt`,`StatusName`)
VALUES(@Id,'v1',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"
;
var
insertedId
=
SnowflakeId
.
Default
().
NextId
();
var
receivedMessage
=
new
CapReceivedMessage
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
Id
=
insertedId
,
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
Group
=
"mygroup"
,
StatusName
=
StatusName
.
Scheduled
[
Headers
.
MessageId
]
=
msgId
};
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
())
var
message
=
new
Message
(
header
,
null
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
await
_storage
.
ChangePublishStateAsync
(
mdMessage
,
StatusName
.
Succeeded
);
}
[
Fact
]
public
async
Task
ChangeReceiveStateTest
()
{
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
await
connection
.
ExecuteAsync
(
sql
,
receivedMessage
);
}
[
Headers
.
MessageId
]
=
msgId
};
var
message
=
new
Message
(
header
,
null
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
var
message
=
await
_storage
.
GetReceivedMessageAsync
(
insertedId
);
Assert
.
NotNull
(
message
);
Assert
.
Equal
(
StatusName
.
Scheduled
,
message
.
StatusName
);
Assert
.
Equal
(
"MySqlStorageConnectionTest"
,
message
.
Name
);
Assert
.
Equal
(
"mygroup"
,
message
.
Group
);
await
_storage
.
ChangeReceiveStateAsync
(
mdMessage
,
StatusName
.
Succeeded
);
}
}
}
\ No newline at end of file
test/DotNetCore.CAP.MySql.Test/TestHost.cs
View file @
5dcb72a4
using
System
;
using
DotNetCore.CAP.Persistence
;
using
Microsoft.Extensions.DependencyInjection
;
namespace
DotNetCore.CAP.MySql.Test
...
...
@@ -6,7 +7,7 @@ namespace DotNetCore.CAP.MySql.Test
public
abstract
class
TestHost
:
IDisposable
{
protected
IServiceCollection
_services
;
protected
string
_c
onnectionString
;
protected
string
C
onnectionString
;
private
IServiceProvider
_provider
;
private
IServiceProvider
_scopedProvider
;
...
...
@@ -27,12 +28,14 @@ namespace DotNetCore.CAP.MySql.Test
services
.
AddOptions
();
services
.
AddLogging
();
_c
onnectionString
=
ConnectionUtil
.
GetConnectionString
();
C
onnectionString
=
ConnectionUtil
.
GetConnectionString
();
services
.
AddOptions
<
CapOptions
>();
services
.
Configure
<
MySqlOptions
>(
x
=>
x
.
ConnectionString
=
_connectionString
);
services
.
AddSingleton
<
MySqlStorage
>();
services
.
Configure
<
MySqlOptions
>(
x
=>
{
x
.
ConnectionString
=
ConnectionString
;
});
services
.
AddSingleton
<
MySqlDataStorage
>();
services
.
AddSingleton
<
IStorageInitializer
,
MySqlStorageInitializer
>();
_services
=
services
;
}
...
...
@@ -72,10 +75,6 @@ namespace DotNetCore.CAP.MySql.Test
public
T
GetService
<
T
>()
=>
Provider
.
GetService
<
T
>();
public
T
Ensure
<
T
>(
ref
T
service
)
where
T
:
class
=>
service
??
(
service
=
GetService
<
T
>());
public
virtual
void
Dispose
()
{
(
_provider
as
IDisposable
)?.
Dispose
();
...
...
test/DotNetCore.CAP.Test/MessageExtensionTest.cs
0 → 100644
View file @
5dcb72a4
using
System
;
using
System.Collections.Generic
;
using
DotNetCore.CAP.Messages
;
using
Xunit
;
namespace
DotNetCore.CAP.Test
{
public
class
MessageExtensionTest
{
[
Fact
]
public
void
GetIdTest
()
{
var
msgId
=
Guid
.
NewGuid
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
MessageId
]
=
msgId
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
NotNull
(
message
.
GetId
());
Assert
.
Equal
(
msgId
,
message
.
GetId
());
}
[
Fact
]
public
void
GetNameTest
()
{
var
msgName
=
Guid
.
NewGuid
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
MessageName
]
=
msgName
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
NotNull
(
message
.
GetName
());
Assert
.
Equal
(
msgName
,
message
.
GetName
());
}
[
Fact
]
public
void
GetCallbackNameTest
()
{
var
callbackName
=
Guid
.
NewGuid
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
CallbackName
]
=
callbackName
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
NotNull
(
message
.
GetCallbackName
());
Assert
.
Equal
(
callbackName
,
message
.
GetCallbackName
());
}
[
Fact
]
public
void
GetGroupTest
()
{
var
group
=
Guid
.
NewGuid
().
ToString
();
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
Group
]
=
group
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
NotNull
(
message
.
GetGroup
());
Assert
.
Equal
(
group
,
message
.
GetGroup
());
}
[
Fact
]
public
void
GetCorrelationSequenceTest
()
{
var
seq
=
1
;
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
CorrelationSequence
]
=
seq
.
ToString
()
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
Equal
(
seq
,
message
.
GetCorrelationSequence
());
}
[
Fact
]
public
void
HasExceptionTest
()
{
var
exception
=
"exception message"
;
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
Exception
]
=
exception
};
var
message
=
new
Message
(
header
,
null
);
Assert
.
True
(
message
.
HasException
());
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment