-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'nats-io:main' into main
- Loading branch information
Showing
89 changed files
with
2,967 additions
and
1,575 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -117,3 +117,5 @@ nuget/*.unitypackage | |
# NuGet package | ||
/dist | ||
|
||
# MacOS folder attributes | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## Community Code of Conduct | ||
|
||
The NATS.Net follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Contributing | ||
|
||
Thanks for your interest in contributing! This document contains `nats-io/nats.net.v2` specific contributing details. If you are a first-time contributor, please refer to the general [NATS Contributor Guide](https://nats.io/contributing/) to get a comprehensive overview of contributing to the NATS project. | ||
|
||
## Getting started | ||
|
||
There are three general ways you can contribute to this repo: | ||
|
||
- Proposing an enhancement or new feature | ||
- Reporting a bug or regression | ||
- Contributing changes to the source code | ||
|
||
For the first two, refer to the [GitHub Issues](https://github.com/nats-io/nats.net.v2/issues/new/choose) which guides you through the available options along with the needed information to collect. | ||
|
||
## Contributing Changes | ||
|
||
_Prior to opening a pull request, it is recommended to open an issue first to ensure the maintainers can review intended changes. Exceptions to this rule include fixing non-functional source such as code comments, documentation or other supporting files._ | ||
|
||
Proposing source code changes is done through GitHub's standard pull request workflow. | ||
|
||
If your branch is a work-in-progress then please start by creating your pull requests as draft, by clicking the down-arrow next to the `Create pull request` button and instead selecting `Create draft pull request`. | ||
|
||
This will defer the automatic process of requesting a review from the NATS.Net team and significantly reduces noise until you are ready. Once you are happy with your PR, you can click the `Ready for review` button. | ||
|
||
### Guidelines | ||
|
||
A good pull request includes: | ||
|
||
- A high-level description of the changes, including links to any issues that are related by adding comments like `Resolves #NNN` to your description. See [Linking a Pull Request to an Issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) for more information. | ||
- An up-to-date parent commit. Please make sure you are pulling in the latest `main` branch and rebasing your work on top of it, i.e. `git rebase main`. | ||
- Unit tests where appropriate. Bug fixes will benefit from the addition of regression tests. New features will not be accepted without suitable test coverage! | ||
- No more commits than necessary. Sometimes having multiple commits is useful for telling a story or isolating changes from one another, but please squash down any unnecessary commits that may just be for clean-up, comments or small changes. | ||
- No additional external dependencies that aren't absolutely essential. Please do everything you can to avoid pulling in additional libraries/dependencies as we will be very critical of these. | ||
|
||
## Get Help | ||
|
||
If you have questions about the contribution process, please start a [GitHub discussion](https://github.com/nats-io/nats.net.v2/discussions) or join the [NATS Slack](https://slack.nats.io/). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
using BenchmarkDotNet.Attributes; | ||
using NATS.Client.Core; | ||
|
||
namespace MicroBenchmark; | ||
|
||
[ShortRunJob] | ||
[MemoryDiagnoser] | ||
[PlainExporter] | ||
public class NKeyBench | ||
{ | ||
[Params(5000)] | ||
public int Iter { get; set; } | ||
|
||
[Benchmark] | ||
public int NKeyCreate() | ||
{ | ||
var result = 0; | ||
for (var i = 0; i < Iter; i++) | ||
{ | ||
var nkey = NKeys.FromSeed("SUAAVWRZG6M5FA5VRRGWSCIHKTOJC7EWNIT4JV3FTOIPO4OBFR5WA7X5TE"); | ||
result += nkey.PublicKey.Length; | ||
} | ||
|
||
return result; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
using System.Text.Json.Serialization; | ||
using BenchmarkDotNet.Attributes; | ||
using NATS.Client.Core; | ||
|
||
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. | ||
|
||
namespace MicroBenchmark; | ||
|
||
[MemoryDiagnoser] | ||
[ShortRunJob] | ||
[PlainExporter] | ||
public class PublishParallelBench | ||
{ | ||
public const int TotalMsgs = 1_000_000; | ||
|
||
private static readonly PublishParallelObj Data = new PublishParallelObj | ||
{ | ||
String = new('a', 32), | ||
Bool = true, | ||
Int = 42, | ||
Dictionary = new Dictionary<string, string> | ||
{ | ||
{ new('a', 32), new('a', 32) }, | ||
{ new('b', 32), new('b', 32) }, | ||
{ new('c', 32), new('c', 32) }, | ||
}, | ||
List = new List<string> | ||
{ | ||
new('a', 32), | ||
new('b', 32), | ||
new('c', 32), | ||
}, | ||
}; | ||
|
||
private NatsConnection _nats; | ||
|
||
[Params(1, 2, 4)] | ||
public int Concurrency { get; set; } | ||
|
||
[GlobalSetup] | ||
public async Task Setup() | ||
{ | ||
var registry = new NatsJsonContextSerializerRegistry(PublishParallelJsonContext.Default); | ||
_nats = new NatsConnection(NatsOpts.Default with { SerializerRegistry = registry }); | ||
await _nats.ConnectAsync(); | ||
} | ||
|
||
[Benchmark] | ||
public async Task PublishParallelAsync() | ||
{ | ||
var tasks = new List<Task>(); | ||
for (var i = 0; i < Concurrency; i++) | ||
{ | ||
tasks.Add(Task.Run(async () => | ||
{ | ||
for (var j = 0; j < TotalMsgs / Concurrency; j++) | ||
{ | ||
await _nats.PublishAsync("test", Data); | ||
} | ||
})); | ||
} | ||
|
||
await Task.WhenAll(tasks); | ||
await _nats.PingAsync(); | ||
} | ||
} | ||
|
||
internal record PublishParallelObj | ||
{ | ||
[JsonPropertyName("string")] | ||
public string String { get; set; } | ||
|
||
[JsonPropertyName("bool")] | ||
public bool Bool { get; set; } | ||
|
||
[JsonPropertyName("int")] | ||
public int Int { get; set; } | ||
|
||
[JsonPropertyName("dictionary")] | ||
public Dictionary<string, string> Dictionary { get; set; } | ||
|
||
[JsonPropertyName("list")] | ||
public List<string> List { get; set; } | ||
} | ||
|
||
[JsonSerializable(typeof(PublishParallelObj))] | ||
internal partial class PublishParallelJsonContext : JsonSerializerContext | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using BenchmarkDotNet.Attributes; | ||
using NATS.Client.Core.NaCl; | ||
|
||
namespace MicroBenchmark; | ||
|
||
[ShortRunJob] | ||
[MemoryDiagnoser] | ||
[PlainExporter] | ||
public class Sha512TBench | ||
{ | ||
private byte[] _data = default!; | ||
|
||
[Params(5000)] | ||
public int Iter { get; set; } | ||
|
||
[Params(1024, 1024 * 25)] | ||
public int DataSize { get; set; } | ||
|
||
[GlobalSetup] | ||
public void Setup() | ||
{ | ||
var random = new Random(4711); | ||
_data = new byte[DataSize]; | ||
random.NextBytes(_data); | ||
} | ||
|
||
[Benchmark] | ||
public int Sha512Hash() | ||
{ | ||
var result = 0; | ||
for (var i = 0; i < Iter; i++) | ||
{ | ||
var hash = Sha512.Hash(_data, 0, _data.Length)!; | ||
result += hash.Length; | ||
} | ||
|
||
return result; | ||
} | ||
} |
Oops, something went wrong.