-
Notifications
You must be signed in to change notification settings - Fork 248
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
NCBC-1066: Support for async K/V method over TLS
Motivation ---------- The async Key/Value methods for async operations were not implemented if UseSsl was enabled. Modifications ------------- Added implementation for SSL/TLS to SslConnection for async memcached requests. Results ------- The client now supports async operation while encrypting/decrypting communication between cluster and app servers. Change-Id: I4febf4e45a2a4472f32faac40a8f3f7528575061 Reviewed-on: http://review.couchbase.org/58710 Reviewed-by: Jeffry Morris <jeffrymorris@gmail.com> Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
- Loading branch information
1 parent
fca6c6b
commit b6b5de3
Showing
5 changed files
with
280 additions
and
3 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
193 changes: 193 additions & 0 deletions
193
Src/Couchbase.IntegrationTests/CouchbaseBucket_Ssl_Tests.cs
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,193 @@ | ||
| ||
using Couchbase.Core; | ||
using Couchbase.IO; | ||
using NUnit.Framework; | ||
|
||
namespace Couchbase.IntegrationTests | ||
{ | ||
[TestFixture] | ||
public class CouchbaseBucketSslTests | ||
{ | ||
private ICluster _cluster; | ||
private IBucket _bucket; | ||
|
||
[TestFixtureSetUp] | ||
public void TestFixtureSetUp() | ||
{ | ||
_cluster = new Cluster(Utils.TestConfiguration.GetConfiguration("ssl")); | ||
_bucket = _cluster.OpenBucket(); | ||
} | ||
|
||
[Test] | ||
public async void Test_GetAsync() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
await _bucket.RemoveAsync(key); | ||
await _bucket.InsertAsync(key, value); | ||
var result = await _bucket.GetAsync<string>(key); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public async void Test_UpsertAsync() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
//await _bucket.RemoveAsync(key); | ||
var result = await _bucket.UpsertAsync(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public async void Test_InsertAsync() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
await _bucket.RemoveAsync(key); | ||
var result = await _bucket.InsertAsync(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public async void Test_RemoveAsync() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
await _bucket.RemoveAsync(key); | ||
var result = await _bucket.GetAsync<string>(key); | ||
Assert.AreEqual(ResponseStatus.KeyNotFound, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Test_Get() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
_bucket.Remove(key); | ||
_bucket.Insert(key, value); | ||
var result = _bucket.Get<string>(key); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Test_Upsert() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
_bucket.Remove(key); | ||
var result = _bucket.Upsert(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Test_Insert() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
_bucket.Remove(key); | ||
var result = _bucket.Insert(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Test_Remove() | ||
{ | ||
var key = "thekey"; | ||
var value = "thevalue"; | ||
|
||
_bucket.Remove(key); | ||
var result = _bucket.Get<string>(key); | ||
Assert.AreEqual(ResponseStatus.KeyNotFound, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Insert_When_Buffer_Is_Smaller_Than_Payload_Return_Success() | ||
{ | ||
var key = "thekey"; | ||
var value = new string[1024*17];//default buffer is ~16kb | ||
|
||
_bucket.Remove(key); | ||
var result = _bucket.Insert(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public async void InsertAsync_When_Buffer_Is_Smaller_Than_Payload_Return_Success() | ||
{ | ||
var key = "thekey"; | ||
var value = new string[1024 * 17];//default buffer is ~16kb | ||
|
||
await _bucket.RemoveAsync(key); | ||
var result = await _bucket.InsertAsync(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
} | ||
|
||
[Test] | ||
public void Insert_And_Get_When_Buffer_Is_Smaller_Than_Payload_Return_Success() | ||
{ | ||
var key = "thekey"; | ||
var value = new string[1024 * 17];//default buffer is ~16kb | ||
|
||
_bucket.Remove(key); | ||
var result = _bucket.Insert(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
|
||
result = _bucket.Get<string[]>(key); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
Assert.AreEqual(value, result.Value); | ||
} | ||
|
||
[Test] | ||
public async void InsertAsync_And_GetAsync_When_Buffer_Is_Smaller_Than_Payload_Return_Success() | ||
{ | ||
var key = "thekey"; | ||
var value = new string[1024 * 17];//default buffer is ~16kb | ||
|
||
_bucket.Remove(key); | ||
var result = await _bucket.InsertAsync(key, value); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
|
||
result = await _bucket.GetAsync<string[]>(key); | ||
Assert.AreEqual(ResponseStatus.Success, result.Status); | ||
Assert.AreEqual(value, result.Value); | ||
} | ||
|
||
[TestFixtureTearDown] | ||
public void TestFixtureTearDown() | ||
{ | ||
_cluster.CloseBucket(_bucket); | ||
_cluster.Dispose(); | ||
} | ||
} | ||
} | ||
|
||
#region [ License information ] | ||
|
||
/* ************************************************************ | ||
* | ||
* @author Couchbase <info@couchbase.com> | ||
* @copyright 2015 Couchbase, Inc. | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
* | ||
* ************************************************************/ | ||
|
||
#endregion |
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