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
Show 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
...
@@ -23,6 +23,6 @@ namespace DotNetCore.CAP
/// <summary>
/// <summary>
/// Data version
/// Data version
/// </summary>
/// </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;
...
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Options
;
using
Microsoft.Extensions.Options
;
// ReSharper disable once CheckNamespace
namespace
DotNetCore.CAP
namespace
DotNetCore.CAP
{
{
public
class
MySqlOptions
:
EFOptions
public
class
MySqlOptions
:
EFOptions
...
@@ -28,15 +29,11 @@ namespace DotNetCore.CAP
...
@@ -28,15 +29,11 @@ namespace DotNetCore.CAP
{
{
if
(
options
.
DbContextType
!=
null
)
if
(
options
.
DbContextType
!=
null
)
{
{
using
(
var
scope
=
_serviceScopeFactory
.
CreateScope
())
using
var
scope
=
_serviceScopeFactory
.
CreateScope
();
{
var
provider
=
scope
.
ServiceProvider
;
var
provider
=
scope
.
ServiceProvider
;
using
(
var
dbContext
=
(
DbContext
)
provider
.
GetRequiredService
(
options
.
DbContextType
))
using
var
dbContext
=
(
DbContext
)
provider
.
GetRequiredService
(
options
.
DbContextType
);
{
options
.
ConnectionString
=
dbContext
.
Database
.
GetDbConnection
().
ConnectionString
;
options
.
ConnectionString
=
dbContext
.
Database
.
GetDbConnection
().
ConnectionString
;
}
}
}
}
}
}
}
}
}
}
\ No newline at end of file
test/DotNetCore.CAP.MySql.Test/DatabaseTestHost.cs
View file @
5dcb72a4
using
System.Threading
;
using
System.Threading
;
using
Dapper
;
using
Dapper
;
using
DotNetCore.CAP.Persistence
;
namespace
DotNetCore.CAP.MySql.Test
namespace
DotNetCore.CAP.MySql.Test
{
{
...
@@ -30,7 +31,7 @@ namespace DotNetCore.CAP.MySql.Test
...
@@ -30,7 +31,7 @@ namespace DotNetCore.CAP.MySql.Test
{
{
using
(
CreateScope
())
using
(
CreateScope
())
{
{
var
storage
=
GetService
<
MySqlStorage
>();
var
storage
=
GetService
<
IStorageInitializer
>();
var
token
=
new
CancellationTokenSource
().
Token
;
var
token
=
new
CancellationTokenSource
().
Token
;
CreateDatabase
();
CreateDatabase
();
storage
.
InitializeAsync
(
token
).
GetAwaiter
().
GetResult
();
storage
.
InitializeAsync
(
token
).
GetAwaiter
().
GetResult
();
...
...
test/DotNetCore.CAP.MySql.Test/DotNetCore.CAP.MySql.Test.csproj
View file @
5dcb72a4
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PropertyGroup>
<TargetFramework>netcoreapp
2.1
</TargetFramework>
<TargetFramework>netcoreapp
3.0
</TargetFramework>
<IsPackable>false</IsPackable>
<IsPackable>false</IsPackable>
</PropertyGroup>
</PropertyGroup>
...
@@ -11,22 +11,11 @@
...
@@ -11,22 +11,11 @@
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="1.60.6" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PrivateAssets>all</PrivateAssets>
<PackageReference Include="coverlet.collector" Version="1.0.1" />
<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="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" />
</ItemGroup>
</ItemGroup>
</Project>
</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
System.Threading.Tasks
;
using
Dapper
;
using
DotNetCore.CAP.Internal
;
using
DotNetCore.CAP.Infrastructure
;
using
DotNetCore.CAP.Messages
;
using
DotNetCore.CAP.Messages
;
using
DotNetCore.CAP.Persistence
;
using
Microsoft.Extensions.Options
;
using
Microsoft.Extensions.Options
;
using
Xunit
;
using
Xunit
;
...
@@ -11,86 +11,78 @@ namespace DotNetCore.CAP.MySql.Test
...
@@ -11,86 +11,78 @@ namespace DotNetCore.CAP.MySql.Test
[
Collection
(
"MySql"
)]
[
Collection
(
"MySql"
)]
public
class
MySqlStorageConnectionTest
:
DatabaseTestHost
public
class
MySqlStorageConnectionTest
:
DatabaseTestHost
{
{
private
MySqlStorageConnection
_storage
;
private
readonly
MySqlDataStorage
_storage
;
public
MySqlStorageConnectionTest
()
public
MySqlStorageConnectionTest
()
{
{
var
options
=
GetService
<
IOptions
<
MySqlOptions
>>();
var
options
=
GetService
<
IOptions
<
MySqlOptions
>>();
var
capOptions
=
GetService
<
IOptions
<
CapOptions
>>();
var
capOptions
=
GetService
<
IOptions
<
CapOptions
>>();
_storage
=
new
MySqlStorageConnection
(
options
,
capOptions
);
var
initializer
=
GetService
<
IStorageInitializer
>();
_storage
=
new
MySqlDataStorage
(
options
,
capOptions
,
initializer
);
}
}
[
Fact
]
[
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
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
var
insertedId
=
SnowflakeId
.
Default
().
NextId
();
var
header
=
new
Dictionary
<
string
,
string
>()
var
publishMessage
=
new
CapPublishedMessage
{
{
Id
=
insertedId
,
[
Headers
.
MessageId
]
=
msgId
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
StatusName
=
StatusName
.
Scheduled
};
};
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
())
var
message
=
new
Message
(
header
,
null
);
{
await
connection
.
ExecuteAsync
(
sql
,
publishMessage
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
}
Assert
.
NotNull
(
mdMessage
);
var
message
=
await
_storage
.
GetPublishedMessageAsync
(
insertedId
);
Assert
.
NotNull
(
message
);
Assert
.
Equal
(
"MySqlStorageConnectionTest"
,
message
.
Name
);
Assert
.
Equal
(
StatusName
.
Scheduled
,
message
.
StatusName
);
}
}
[
Fact
]
[
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
(),
[
Headers
.
MessageId
]
=
msgId
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
Group
=
"mygroup"
,
StatusName
=
StatusName
.
Scheduled
};
};
var
message
=
new
Message
(
header
,
null
);
Exception
exception
=
null
;
var
mdMessage
=
await
_storage
.
StoreReceivedMessageAsync
(
"test.name"
,
"test.group"
,
message
);
try
Assert
.
NotNull
(
mdMessage
);
{
_storage
.
StoreReceivedMessage
(
receivedMessage
);
}
}
catch
(
Exception
ex
)
[
Fact
]
public
async
Task
StoreReceivedExceptionMessageTest
()
{
{
exception
=
ex
;
await
_storage
.
StoreReceivedExceptionMessageAsync
(
"test.name"
,
"test.group"
,
""
);
}
Assert
.
Null
(
exception
);
}
}
[
Fact
]
[
Fact
]
public
async
Task
GetReceivedMessageAsync_
Test
()
public
async
Task
ChangePublishState
Test
()
{
{
var
sql
=
$@"
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
INSERT INTO `cap.received`(`Id`,`Version`,`Name`,`Group`,`Content`,`Retries`,`Added`,`ExpiresAt`,`StatusName`)
var
header
=
new
Dictionary
<
string
,
string
>()
VALUES(@Id,'v1',@Name,@Group,@Content,@Retries,@Added,@ExpiresAt,@StatusName);"
;
var
insertedId
=
SnowflakeId
.
Default
().
NextId
();
var
receivedMessage
=
new
CapReceivedMessage
{
{
Id
=
insertedId
,
[
Headers
.
MessageId
]
=
msgId
Name
=
"MySqlStorageConnectionTest"
,
Content
=
""
,
Group
=
"mygroup"
,
StatusName
=
StatusName
.
Scheduled
};
};
using
(
var
connection
=
ConnectionUtil
.
CreateConnection
())
var
message
=
new
Message
(
header
,
null
);
{
await
connection
.
ExecuteAsync
(
sql
,
receivedMessage
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
await
_storage
.
ChangePublishStateAsync
(
mdMessage
,
StatusName
.
Succeeded
);
}
}
var
message
=
await
_storage
.
GetReceivedMessageAsync
(
insertedId
);
[
Fact
]
Assert
.
NotNull
(
message
);
public
async
Task
ChangeReceiveStateTest
()
Assert
.
Equal
(
StatusName
.
Scheduled
,
message
.
StatusName
);
{
Assert
.
Equal
(
"MySqlStorageConnectionTest"
,
message
.
Name
);
var
msgId
=
SnowflakeId
.
Default
().
NextId
().
ToString
();
Assert
.
Equal
(
"mygroup"
,
message
.
Group
);
var
header
=
new
Dictionary
<
string
,
string
>()
{
[
Headers
.
MessageId
]
=
msgId
};
var
message
=
new
Message
(
header
,
null
);
var
mdMessage
=
await
_storage
.
StoreMessageAsync
(
"test.name"
,
message
);
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
System
;
using
DotNetCore.CAP.Persistence
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.DependencyInjection
;
namespace
DotNetCore.CAP.MySql.Test
namespace
DotNetCore.CAP.MySql.Test
...
@@ -6,7 +7,7 @@ namespace DotNetCore.CAP.MySql.Test
...
@@ -6,7 +7,7 @@ namespace DotNetCore.CAP.MySql.Test
public
abstract
class
TestHost
:
IDisposable
public
abstract
class
TestHost
:
IDisposable
{
{
protected
IServiceCollection
_services
;
protected
IServiceCollection
_services
;
protected
string
_c
onnectionString
;
protected
string
C
onnectionString
;
private
IServiceProvider
_provider
;
private
IServiceProvider
_provider
;
private
IServiceProvider
_scopedProvider
;
private
IServiceProvider
_scopedProvider
;
...
@@ -27,12 +28,14 @@ namespace DotNetCore.CAP.MySql.Test
...
@@ -27,12 +28,14 @@ namespace DotNetCore.CAP.MySql.Test
services
.
AddOptions
();
services
.
AddOptions
();
services
.
AddLogging
();
services
.
AddLogging
();
_c
onnectionString
=
ConnectionUtil
.
GetConnectionString
();
C
onnectionString
=
ConnectionUtil
.
GetConnectionString
();
services
.
AddOptions
<
CapOptions
>();
services
.
AddOptions
<
CapOptions
>();
services
.
Configure
<
MySqlOptions
>(
x
=>
x
.
ConnectionString
=
_connectionString
);
services
.
Configure
<
MySqlOptions
>(
x
=>
{
services
.
AddSingleton
<
MySqlStorage
>();
x
.
ConnectionString
=
ConnectionString
;
});
services
.
AddSingleton
<
MySqlDataStorage
>();
services
.
AddSingleton
<
IStorageInitializer
,
MySqlStorageInitializer
>();
_services
=
services
;
_services
=
services
;
}
}
...
@@ -72,10 +75,6 @@ namespace DotNetCore.CAP.MySql.Test
...
@@ -72,10 +75,6 @@ namespace DotNetCore.CAP.MySql.Test
public
T
GetService
<
T
>()
=>
Provider
.
GetService
<
T
>();
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
()
public
virtual
void
Dispose
()
{
{
(
_provider
as
IDisposable
)?.
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