public void Parse_Mutation_Cas_Field(string cas, long expected) { var parsed = AtrEntry.ParseMutationCasField(cas); Assert.NotNull(parsed); Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(expected), parsed); }
public Task MutateAtrPending(ulong exp, DurabilityLevel durabilityLevel) { var atrEntry = new AtrEntry() { State = Support.AttemptStates.PENDING, DurabilityLevel = new ShortStringDurabilityLevel(durabilityLevel).ToString() }; Atrs[FullId] = atrEntry; return(Task.CompletedTask); }
public static async Task <AtrEntry?> FindEntryForTransaction( ICouchbaseCollection atrCollection, string atrId, string attemptId, TimeSpan?keyValueTimeout = null ) { _ = atrCollection ?? throw new ArgumentNullException(nameof(atrCollection)); _ = atrId ?? throw new ArgumentNullException(nameof(atrId)); var lookupInResult = await atrCollection.LookupInAsync(atrId, specs => specs.Get(TransactionFields.AtrFieldAttempts, isXattr: true), opts => opts.Defaults(keyValueTimeout).AccessDeleted(true)).CAF(); if (!lookupInResult.Exists(0)) { return(null); } var asJson = lookupInResult.ContentAs <JObject>(0); if (asJson.TryGetValue(attemptId, out var entry)) { var atrEntry = AtrEntry.CreateFrom(entry); if (atrEntry?.Cas == null && atrEntry?.State == default) { throw new InvalidOperationException("ATR could not be parsed."); } return(atrEntry); } else { return(null); } }