Skip to content

Commit 6508cc2

Browse files
CSHARP-3335: mongocryptd should allow setting it via the PATH.
1 parent 26587b9 commit 6508cc2

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

src/MongoDB.Driver/Encryption/MongocryptdFactory.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ private bool ShouldMongocryptdBeSpawned(out string path, out string args)
119119
path = string.Empty; // look at the PATH env variable
120120
}
121121

122-
if (Directory.Exists(path))
122+
if (string.IsNullOrEmpty(path) || Directory.Exists(path))
123123
{
124124
string fileName = $"mongocryptd{GetMongocryptdExtension()}";
125-
path = Path.Combine(path, fileName);
125+
path = Path.Combine(path ?? "", fileName);
126126
}
127127

128128
args = string.Empty;

tests/MongoDB.Driver.Tests/MongocryptdFactoryTests.cs

+18-15
Original file line numberDiff line numberDiff line change
@@ -42,40 +42,43 @@ public void CreateMongocryptdConnectionString_should_create_expected_connection_
4242

4343
[SkippableTheory]
4444
[InlineData("{ mongocryptdBypassSpawn : true }", null, null, false)]
45-
[InlineData(null, "", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
46-
[InlineData("{ mongocryptdBypassSpawn : false }", "", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
47-
[InlineData("{ mongocryptdBypassSpawn : false }", "", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
45+
[InlineData(null, "mongocryptd#extension#", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
46+
[InlineData("{ mongocryptdBypassSpawn : false }", "mongocryptd#extension#", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
4847
[InlineData("{ mongocryptdBypassSpawn : false, mongocryptdSpawnPath : 'c:/mongocryptd.exe' }", "c:/mongocryptd.exe", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
4948
[InlineData("{ mongocryptdBypassSpawn : false, mongocryptdSpawnPath : 'c:/mgcr.exe' }", "c:/mgcr.exe", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
5049
[InlineData("{ mongocryptdBypassSpawn : false, mongocryptdSpawnPath : 'c:/mgcr.exe' }", "c:/mgcr.exe", "--idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
5150
// args string
52-
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B' }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
53-
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --idleShutdownTimeoutSecs 50' }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
54-
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logpath path.txt' }", "", "--arg1 A --arg2 B --logpath path.txt --idleShutdownTimeoutSecs 60", true)]
55-
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logpath path.txt --logappend' }", "", "--arg1 A --arg2 B --logpath path.txt --logappend --idleShutdownTimeoutSecs 60", true)]
56-
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logappend' }", "", "--arg1 A --arg2 B --logappend --idleShutdownTimeoutSecs 60 --logpath #logpath#", true)]
51+
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B' }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
52+
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --idleShutdownTimeoutSecs 50' }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
53+
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logpath path.txt' }", "mongocryptd#extension#", "--arg1 A --arg2 B --logpath path.txt --idleShutdownTimeoutSecs 60", true)]
54+
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logpath path.txt --logappend' }", "mongocryptd#extension#", "--arg1 A --arg2 B --logpath path.txt --logappend --idleShutdownTimeoutSecs 60", true)]
55+
[InlineData("{ mongocryptdSpawnArgs : '--arg1 A --arg2 B --logappend' }", "mongocryptd#extension#", "--arg1 A --arg2 B --logappend --idleShutdownTimeoutSecs 60 --logpath #logpath#", true)]
5756
// args IEnumerable
58-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B'] }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
59-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', 'idleShutdownTimeoutSecs 50'] }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
60-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', '--arg2 B', '--idleShutdownTimeoutSecs 50'] }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
61-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logpath path.txt'] }", "", "--arg1 A --arg2 B --logpath path.txt --idleShutdownTimeoutSecs 60", true)]
62-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logpath path.txt', '--logappend'] }", "", "--arg1 A --arg2 B --logpath path.txt --logappend --idleShutdownTimeoutSecs 60", true)]
63-
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logappend'] }", "", "--arg1 A --arg2 B --logappend --idleShutdownTimeoutSecs 60 --logpath #logpath#", true)]
64-
[InlineData("{ mongocryptdBypassSpawn : false, mongocryptdSpawnArgs : [ '--arg1 A', '--arg2 B', '--idleShutdownTimeoutSecs 50'] }", "", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
57+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 60 --logpath #logpath# --logappend", true)]
58+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', 'idleShutdownTimeoutSecs 50'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
59+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', '--arg2 B', '--idleShutdownTimeoutSecs 50'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
60+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logpath path.txt'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --logpath path.txt --idleShutdownTimeoutSecs 60", true)]
61+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logpath path.txt', '--logappend'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --logpath path.txt --logappend --idleShutdownTimeoutSecs 60", true)]
62+
[InlineData("{ mongocryptdSpawnArgs : ['arg1 A', 'arg2 B', '--logappend'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --logappend --idleShutdownTimeoutSecs 60 --logpath #logpath#", true)]
63+
[InlineData("{ mongocryptdBypassSpawn : false, mongocryptdSpawnArgs : [ '--arg1 A', '--arg2 B', '--idleShutdownTimeoutSecs 50'] }", "mongocryptd#extension#", "--arg1 A --arg2 B --idleShutdownTimeoutSecs 50 --logpath #logpath# --logappend", true)]
6564
public void Mongocryptd_should_be_spawned_with_correct_extra_arguments(
6665
string stringExtraOptions,
6766
string expectedPath,
6867
string expectedArgs,
6968
bool shouldBeSpawned)
7069
{
7170
string emptyLogPath;
71+
string platformExtension;
7272
#if WINDOWS
7373
emptyLogPath = "nul";
74+
platformExtension = ".exe";
7475
#else
7576
emptyLogPath = "/dev/null";
77+
platformExtension = "";
7678
#endif
7779
stringExtraOptions = stringExtraOptions?.Replace("#logpath#", emptyLogPath);
7880
expectedArgs = expectedArgs?.Replace("#logpath#", emptyLogPath);
81+
expectedPath = expectedPath?.Replace("#extension#", platformExtension);
7982

8083
var bsonDocumentExtraOptions =
8184
stringExtraOptions != null

0 commit comments

Comments
 (0)