internal string CreateN1QlQuery(IBucket bucket, Expression expression, ClusterVersion clusterVersion, bool selectDocumentMetadata, out ScalarResultBehavior resultBehavior) { var serializer = new Core.Serialization.DefaultSerializer(); var bucketContext = new Mock <IBucketContext>(); bucketContext.SetupGet(p => p.Bucket).Returns(bucket); bucketContext.SetupGet(p => p.Configuration).Returns(new ClientConfiguration { Serializer = () => serializer }); var queryModel = QueryParserHelper.CreateQueryParser(bucketContext.Object).GetParsedQuery(expression); var queryGenerationContext = new N1QlQueryGenerationContext() { MemberNameResolver = MemberNameResolver, MethodCallTranslatorProvider = new DefaultMethodCallTranslatorProvider(), Serializer = serializer, SelectDocumentMetadata = selectDocumentMetadata, ClusterVersion = clusterVersion }; var visitor = new N1QlQueryModelVisitor(queryGenerationContext); visitor.VisitQueryModel(queryModel); resultBehavior = visitor.ScalarResultBehavior; return(visitor.GetQuery()); }
internal string CreateN1QlQuery(IBucket bucket, Expression expression, ClusterVersion clusterVersion, bool selectDocumentMetadata, out ScalarResultBehavior resultBehavior) { var mockCluster = new Mock <ICluster>(); mockCluster .Setup(p => p.ClusterServices) .Returns(ServiceProvider); var queryModel = QueryParserHelper.CreateQueryParser(mockCluster.Object).GetParsedQuery(expression); var queryGenerationContext = new N1QlQueryGenerationContext() { MemberNameResolver = MemberNameResolver, MethodCallTranslatorProvider = new DefaultMethodCallTranslatorProvider(), Serializer = ServiceProvider.GetRequiredService <ITypeSerializer>(), SelectDocumentMetadata = selectDocumentMetadata, ClusterVersion = clusterVersion, LoggerFactory = LoggerFactory }; var visitor = new N1QlQueryModelVisitor(queryGenerationContext); visitor.VisitQueryModel(queryModel); resultBehavior = visitor.ScalarResultBehavior; return(visitor.GetQuery()); }
public void ctor_BuildLessThanZeroAndSuffix_AlwaysNegativeOne() { // Act var version = new ClusterVersion(new System.Version(1, 0, 0), -2, "suffix"); // Assert Assert.Equal(-1, version.Build); }
public void Parse_GoodVersion_ReturnsVersion() { // Act var version = ClusterVersion.Parse("1.0.0"); // Assert Assert.Equal(new ClusterVersion(new System.Version(1, 0, 0)), version); }
public BucketQueryExecutorEmulator(N1QLTestBase test, ClusterVersion clusterVersion) { if (test == null) { throw new ArgumentNullException("test"); } _test = test; _clusterVersion = clusterVersion; }
/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, ClusterVersion obj) { // Required properties are always serialized, optional properties are serialized when not null. writer.WriteStartObject(); if (obj.Version != null) { writer.WriteProperty(obj.Version, "Version", JsonWriterExtensions.WriteStringValue); } writer.WriteEndObject(); }
public void TryParse_BadVesion_ReturnsFalse() { // Act ClusterVersion version; var result = ClusterVersion.TryParse("abcd", out version); // Assert Assert.False(result); }
public void TryParse_GoodVersion_ReturnsTrueAndVersion() { // Act ClusterVersion version; var result = ClusterVersion.TryParse("1.0.0", out version); // Assert Assert.True(result); Assert.Equal(new ClusterVersion(new System.Version(1, 0, 0)), version); }
public void TryParse_WithBuildAndSuffix_ReturnsTrueAndVersion() { // Act ClusterVersion version; var result = ClusterVersion.TryParse("1.0.0-100-suffix", out version); // Assert Assert.True(result); Assert.Equal(new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix"), version); }
public void TryParse_WithSegmentedSuffix_ReturnsTrueAndVersion() { // Act ClusterVersion version; var result = ClusterVersion.TryParse("1.0.0-suffix-suffix2", out version); // Assert Assert.True(result); Assert.Equal(new ClusterVersion(new System.Version(1, 0, 0), -1, "suffix-suffix2"), version); }
public void Equals_DifferentBuild_ReturnsFalse() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0), 100); // Act var result = version.Equals(new ClusterVersion(new System.Version(1, 0, 0), 101)); // Assert Assert.False(result); }
public void Equals_DifferentVersion_ReturnsTrue() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0)); // Act var result = version.Equals(new ClusterVersion(new System.Version(1, 1, 0))); // Assert Assert.False(result); }
public void Equals_NotClusterVersion_ReturnsFalse() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0)); // Act var result = version.Equals(new object()); // Assert Assert.False(result); }
public void Equals_DifferentSuffix_ReturnsFalse() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix"); // Act var result = version.Equals(new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix2")); // Assert Assert.False(result); }
public void ToString_VersionOnly_ReturnsVersion() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0)); // Act var result = version.ToString(); // Assert Assert.Equal("1.0.0", result); }
public void Equals_SameSuffix_ReturnsTrue() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix"); // Act var result = version.Equals(new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix")); // Assert Assert.True(result); }
public void ToString_NoBuild_ReturnsVersionAndSuffix() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0), -1, "suffix"); // Act var result = version.ToString(); // Assert Assert.Equal("1.0.0-suffix", result); }
public void ToString_NullSuffix_ReturnsVersionAndBuild() { // Arrange var version = new ClusterVersion(new System.Version(1, 0, 0), 100, null); // Act var result = version.ToString(); // Assert Assert.Equal("1.0.0-100", result); }
public void Deconstruct_Double_GetsValue() { // Arrange var clusterVersion = new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix"); // Act var(version, build) = clusterVersion; // Assert Assert.Equal(new System.Version(1, 0, 0), version); Assert.Equal(100, build); }
public void ComparisonOperators_GreaterSuffix() { // Arrange var leftVersion = new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix2"); var rightVersion = new ClusterVersion(new System.Version(1, 0, 0), 100, "suffix"); // Assert Assert.False(leftVersion < rightVersion); Assert.False(leftVersion <= rightVersion); Assert.False(leftVersion == rightVersion); Assert.True(leftVersion != rightVersion); Assert.True(leftVersion >= rightVersion); Assert.True(leftVersion > rightVersion); }
public void ComparisonOperators_EqualBuild() { // Arrange var leftVersion = new ClusterVersion(new System.Version(1, 0, 0), 100); var rightVersion = new ClusterVersion(new System.Version(1, 0, 0), 100); // Assert Assert.False(leftVersion < rightVersion); Assert.True(leftVersion <= rightVersion); Assert.True(leftVersion == rightVersion); Assert.False(leftVersion != rightVersion); Assert.True(leftVersion >= rightVersion); Assert.False(leftVersion > rightVersion); }
public async Task InitializeMembershipTable(bool tryInitTableVersion) { try { var cassandraCluster = Cluster.Builder() .AddContactPoints(_cassandraClusteringOptions.ContactPoints.Split(',')) .Build(); var session = await cassandraCluster.ConnectAsync(); await Task.Run( () => { var keyspace = _cassandraClusteringOptions.Keyspace; session.CreateKeyspaceIfNotExists( keyspace, new Dictionary <string, string> { { "class", "SimpleStrategy" }, { "replication_factor", _cassandraClusteringOptions.ReplicationFactor.ToString() } }); session.ChangeKeyspace(keyspace); }); var mappingConfiguration = new MappingConfiguration().Define(new EntityMappings(_cassandraClusteringOptions.TableName)); _dataTable = new Table <ClusterMembership>(session, mappingConfiguration); await Task.Run(() => _dataTable.CreateIfNotExists()); _mapper = new Mapper(session, mappingConfiguration); if (tryInitTableVersion) { await _mapper.InsertAsync( ClusterVersion.New(_clusterId), CqlQueryOptions.New().SetConsistencyLevel(DefaultConsistencyLevel)); } } catch (DriverException) { _logger.LogWarning("Cassandra driver error occured while initializing membership data table for cluster {clusterId}.", _clusterId); throw; } }
protected string CreateN1QlQuery(IBucket bucket, Expression expression, ClusterVersion clusterVersion, bool selectDocumentMetadata) { return(CreateN1QlQuery(bucket, expression, clusterVersion, selectDocumentMetadata, out var _)); }
/// <summary> /// Gets the version of the cluster hosting a bucket. /// </summary> /// <param name="bucket">Couchbase bucket.</param> /// <exception cref="ArgumentNullException"><paramref name="bucket"/> is null.</exception> /// <returns>The version of the cluster hosting this bucket, or 4.0.0 if unable to determine the version.</returns> public ClusterVersion GetVersion(IBucket bucket) { if (bucket == null) { throw new ArgumentNullException("bucket"); } var cluster = bucket.Cluster; // First check for an existing result var version = CacheLookup(cluster); if (version != null) { return(version.Value); } var contextCache = SynchronizationContext.Current; SynchronizationContext.SetSynchronizationContext(null); try { // Only check one cluster at a time, this prevents multiple lookups during bootstrap lock (_lock) { // In case the version was received while we were waiting for the lock, check for it again version = CacheLookup(cluster); if (version != null) { return(version.Value); } try { // Use the bucket to get the cluster version, in case we're using old-style bucket passwords version = bucket.GetClusterVersionAsync().Result; if (version != null) { CacheStore(cluster, version.Value); return(version.Value); } } catch (Exception ex) { _log.Error("Unhandled error getting cluster version", ex); // Don't cache on exception, but assume 4.0 for now return(new ClusterVersion(new Version(4, 0, 0))); } // No version information could be loaded from any node var fallbackVersion = new ClusterVersion(new Version(4, 0, 0)); CacheStore(cluster, fallbackVersion); return(fallbackVersion); } } finally { if (contextCache != null) { SynchronizationContext.SetSynchronizationContext(contextCache); } } }
protected string CreateN1QlQuery(IBucket bucket, Expression expression, ClusterVersion clusterVersion) { return(CreateN1QlQuery(bucket, expression, clusterVersion, false)); }
public ClusterQueryExecutorEmulator(N1QLTestBase test, ClusterVersion clusterVersion) { Test = test ?? throw new ArgumentNullException(nameof(test)); _clusterVersion = clusterVersion; }
public void Parse_BadVersion_ThrowsFormatException() { // Act/Assert Assert.Throws <FormatException>(() => ClusterVersion.Parse("abcd")); }
internal virtual void CacheStore(ICluster cluster, ClusterVersion version) { _versionsByUri.AddOrUpdate(cluster, version, (key, oldValue) => version); }