public async Task TrajectoryStation200_PutObject_Can_Add_TrajectoryStation()
        {
            AddParents();
            await RequestSessionAndAssert();

            var handler = _client.Handler <IStoreCustomer>();
            var uri     = TrajectoryStation.GetUri();

            var dataObject = CreateDataObject(uri, TrajectoryStation);

            // Get Object Expecting it Not to Exist
            await GetAndAssert(handler, uri, Energistics.EtpErrorCodes.NotFound);

            // Put Object
            await PutAndAssert(handler, dataObject);

            // Get Object
            var args = await GetAndAssert(handler, uri);

            // Check Data Object XML
            Assert.IsNotNull(args?.Message.DataObject);
            var xml = args.Message.DataObject.GetString();

            var result = Parse <TrajectoryStation>(xml);

            Assert.IsNotNull(result);
        }
        private void Trajectory141DataAdapter_UpdateInStore_Append_Trajectory_Stations_Set_ObjectGrowing_And_IsActive_State(int numberOfStations)
        {
            AddParents();

            // Add trajectory
            DevKit.AddAndAssert(Trajectory);
            var result         = DevKit.GetAndAssert(Trajectory);
            var wellboreResult = DevKit.GetAndAssert(Wellbore);

            Assert.IsFalse(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");
            Assert.IsFalse(wellboreResult.IsActive.GetValueOrDefault(), "IsActive");

            // Update trajectory with stations
            var stations = DevKit.TrajectoryStations(numberOfStations, 5);

            Trajectory.TrajectoryStation = stations;
            DevKit.UpdateAndAssert(Trajectory);

            result         = DevKit.GetAndAssert(Trajectory);
            wellboreResult = DevKit.GetAndAssert(Wellbore);

            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);
            Assert.IsTrue(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");
            Assert.IsTrue(wellboreResult.IsActive.GetValueOrDefault(), "IsActive");

            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            // Another update with station
            var newStation = new TrajectoryStation
            {
                Uid = "sta-" + (numberOfStations + 1),
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 1
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            var update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    newStation
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result         = DevKit.GetAndAssert(Trajectory);
            wellboreResult = DevKit.GetAndAssert(Wellbore);

            Assert.AreEqual(Trajectory.TrajectoryStation.Count + 1, result.TrajectoryStation.Count);
            Assert.IsTrue(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");
            Assert.IsTrue(wellboreResult.IsActive.GetValueOrDefault(), "IsActive");
        }
        private void Trajectory141DataAdapter_UpdateInStore_Update_Trajectory_Data(int numberOfStations)
        {
            // Add well and wellbore
            AddParents();

            // Add trajectory with stations
            var stations = DevKit.TrajectoryStations(numberOfStations, 0);
            var station5 = stations.LastOrDefault();

            Assert.IsNotNull(station5);
            stations.Remove(station5);
            Trajectory.TrajectoryStation = stations;
            DevKit.AddAndAssert(Trajectory);

            // Get trajectory
            var result = DevKit.GetAndAssert(Trajectory);

            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);

            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            var station1Update = new TrajectoryStation
            {
                Uid                = station1.Uid,
                TypeTrajStation    = station1.TypeTrajStation,
                Azi                = station1.Azi,
                ExtensionNameValue = new List <ExtensionNameValue> {
                    DevKit.ExtensionNameValue("Ext-1", "1.0", "m")
                }
            };

            var update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    station1Update, station5
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result = DevKit.GetAndAssert(Trajectory);
            Assert.AreEqual(Trajectory.TrajectoryStation.Count + 1, result.TrajectoryStation.Count);
            var updatedStation1 = result.TrajectoryStation.FirstOrDefault(s => s.Uid == station1.Uid);

            Assert.IsNotNull(updatedStation1);
            Assert.AreEqual(station1.Azi.Value, updatedStation1.Azi.Value);
            Assert.AreEqual(station1Update.ExtensionNameValue.Count, updatedStation1.ExtensionNameValue.Count);

            var updatedStation5 = result.TrajectoryStation.FirstOrDefault(s => s.Uid == station5.Uid);

            Assert.IsNotNull(updatedStation5);
        }
        public async Task TrajectoryStation200_PutObject_Can_Update_TrajectoryStation()
        {
            AddParents();
            await RequestSessionAndAssert();

            var handler = _client.Handler <IStoreCustomer>();
            var uri     = TrajectoryStation.GetUri();

            // Add a ExtensionNameValue to Data Object
            var envName = "TestPutObject";
            var env     = DevKit.ExtensionNameValue(envName, envName);

            TrajectoryStation.ExtensionNameValue = new List <ExtensionNameValue>()
            {
                env
            };

            var dataObject = CreateDataObject(uri, TrajectoryStation);

            // Get Object Expecting it Not to Exist
            await GetAndAssert(handler, uri, Energistics.EtpErrorCodes.NotFound);

            // Put Object for Add
            await PutAndAssert(handler, dataObject);

            // Get Added Object
            var args = await GetAndAssert(handler, uri);

            // Check Added Data Object XML
            Assert.IsNotNull(args?.Message.DataObject);
            var xml = args.Message.DataObject.GetString();

            var result = Parse <TrajectoryStation>(xml);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.ExtensionNameValue.FirstOrDefault(e => e.Name.Equals(envName)));

            // Remove Comment from Data Object
            result.ExtensionNameValue.Clear();

            var updateDataObject = CreateDataObject(uri, result);

            // Put Object for Update
            await PutAndAssert(handler, updateDataObject);

            // Get Updated Object
            args = await GetAndAssert(handler, uri);

            // Check Added Data Object XML
            Assert.IsNotNull(args?.Message.DataObject);
            var updateXml = args.Message.DataObject.GetString();

            result = Parse <TrajectoryStation>(updateXml);
            Assert.IsNotNull(result);

            // Test Data Object overwrite
            Assert.IsNull(result.ExtensionNameValue.FirstOrDefault(e => e.Name.Equals(envName)));
        }
        private void Trajectory131DataAdapter_UpdateInStore_Append_Trajectory_Stations_ExpireGrowingObjects(int numberOfStations)
        {
            AddParents();

            // Add trajectory with stations
            var stations = DevKit.TrajectoryStations(numberOfStations, 5);

            Trajectory.TrajectoryStation = stations;
            DevKit.AddAndAssert(Trajectory);

            var result = DevKit.GetAndAssert(Trajectory);

            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);
            Assert.IsFalse(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");

            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            //update
            var newStation = new TrajectoryStation
            {
                Uid = "sta-" + (numberOfStations + 1),
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 6.5
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            var update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    newStation
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result = DevKit.GetAndAssert(Trajectory);
            Assert.AreEqual(Trajectory.TrajectoryStation.Count + 1, result.TrajectoryStation.Count);
            Assert.IsTrue(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");

            WitsmlSettings.TrajectoryGrowingTimeoutPeriod = GrowingTimeoutPeriod;
            Thread.Sleep(GrowingTimeoutPeriod * 1000);

            DevKit.Container.Resolve <ObjectGrowingManager>().ExpireGrowingObjects();

            result = DevKit.GetAndAssert(Trajectory);
            Assert.IsFalse(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");
        }
        public async Task TrajectoryStation200_GetResources_Can_Get_All_TrajectoryStation_Resources()
        {
            AddParents();
            DevKit.AddAndAssert(TrajectoryStation);
            await RequestSessionAndAssert();

            var uri       = TrajectoryStation.GetUri();
            var parentUri = uri.Parent;

            var folderUri = parentUri.Append(uri.ObjectType);

            await GetResourcesAndAssert(folderUri);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Generations trajectory station data.
        /// </summary>
        /// <param name="numOfStations">The number of stations.</param>
        /// <param name="startMd">The start md.</param>
        /// <param name="mdUom">The MD index uom.</param>
        /// <param name="tvdUom">The Tvd uom.</param>
        /// <param name="angleUom">The angle uom.</param>
        /// <param name="includeExtra">True if to generate extra information for trajectory station.</param>
        /// <returns>The trajectoryStation collection.</returns>
        public List <TrajectoryStation> GenerationStations(int numOfStations, double startMd, MeasuredDepthUom mdUom = MdUom, WellVerticalCoordinateUom tvdUom = TvdUom, PlaneAngleUom angleUom = AngleUom, bool includeExtra = false)
        {
            var stations = new List <TrajectoryStation>();
            var random   = new Random(numOfStations * 2);
            var now      = DateTimeOffset.Now.AddDays(-1);

            for (var i = 0; i < numOfStations; i++)
            {
                string uidPrefix = (i + 1).ToString();
                var    station   = new TrajectoryStation
                {
                    Uid             = StationUidPrefix + uidPrefix,
                    TypeTrajStation = i == 0 ? TrajStationType.tieinpoint : TrajStationType.magneticMWD,
                    MD = new MeasuredDepthCoord {
                        Uom = mdUom, Value = startMd
                    },
                    Tvd = new WellVerticalDepthCoord()
                    {
                        Uom = tvdUom, Value = startMd == 0 ? 0 : startMd - 0.1
                    },
                    Azi = new PlaneAngleMeasure {
                        Uom = angleUom, Value = startMd == 0 ? 0 : random.NextDouble()
                    },
                    Incl = new PlaneAngleMeasure {
                        Uom = angleUom, Value = startMd == 0 ? 0 : random.NextDouble()
                    },
                    DateTimeStn = now.AddMinutes(i),
                    Location    = new List <Location> {
                        Location(LocationUidPrefix + 1, random.NextDouble(), "ED" + uidPrefix)
                    }
                };

                if (includeExtra)
                {
                    station.Mtf = new PlaneAngleMeasure {
                        Uom = angleUom, Value = random.NextDouble()
                    };
                    station.MDDelta = new MeasuredDepthCoord {
                        Uom = MeasuredDepthUom.m, Value = 0
                    };
                    station.StatusTrajStation = TrajStationStatus.position;
                }

                stations.Add(station);
                startMd++;
            }

            return(stations);
        }
Ejemplo n.º 8
0
        private static DataObject ToDataObject(Trajectory entity, TrajectoryStation trajectoryStation)
        {
            var dataObject = new DataObject();

            if (entity == null || trajectoryStation == null)
            {
                return(dataObject);
            }

            var uri      = entity.GetUri();
            var childUri = uri.Append(ObjectTypes.TrajectoryStation, trajectoryStation.Uid);

            StoreStoreProvider.SetDataObject(dataObject, trajectoryStation, childUri, entity.Citation.Title, 0);

            return(dataObject);
        }
        public void TestSetUp()
        {
            Logger.Debug($"Executing {TestContext.TestName}");
            DevKit = new DevKit200Aspect(TestContext);

            TrajectoryStation = new TrajectoryStation
            {
                SchemaVersion = EtpUris.GetUriFamily(typeof(TrajectoryStation)).Version,

                Uuid     = DevKit.Uid(),
                Citation = DevKit.Citation("TrajectoryStation")
            };

            BeforeEachTest();
            OnTestSetUp();
        }
        private void Trajectory131DataAdapter_UpdateInStore_Update_Trajectory_Station_Unchanged_ObjectGrowing_State(int numberOfStations)
        {
            AddParents();

            // Add trajectory with stations
            var stations = DevKit.TrajectoryStations(numberOfStations, 5);

            Trajectory.TrajectoryStation = stations;
            DevKit.AddAndAssert(Trajectory);

            var result = DevKit.GetAndAssert(Trajectory);

            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);
            Assert.IsFalse(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");

            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            //update station
            var newStation = new TrajectoryStation
            {
                Uid = "sta-3",
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 6.5
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            var update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    newStation
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result = DevKit.GetAndAssert(Trajectory);
            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);
            Assert.IsFalse(result.ObjectGrowing.GetValueOrDefault(), "ObjectGrowing");
        }
        public void Trajectory141DataAdapter_ChangeLog_Tracks_ObjectGrowing_State()
        {
            AddParents();

            // Add trajectory with stations
            var stations = DevKit.TrajectoryStations(3, 5);

            Trajectory.TrajectoryStation = stations;
            DevKit.AddAndAssert(Trajectory);

            var result         = DevKit.GetAndAssert(Trajectory);
            var wellboreResult = DevKit.GetAndAssert(Wellbore);
            var changeHistory  = DevKit.GetAndAssertChangeLogHistory(result.GetUri()).First();

            Assert.AreEqual(Trajectory.TrajectoryStation.Count, result.TrajectoryStation.Count);
            DevKit.AssertChangeLog(result, 1, ChangeInfoType.add);
            AssertObjectGrowingStatus(result, wellboreResult, changeHistory, false);

            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            // Update with station, set change history object growing flag
            var newStation = new TrajectoryStation
            {
                Uid = "sta-4",
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 6.5
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            var update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    newStation
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result         = DevKit.GetAndAssert(Trajectory);
            wellboreResult = DevKit.GetAndAssert(Wellbore);
            changeHistory  = DevKit.GetAndAssertChangeLogHistory(result.GetUri()).First();

            Assert.AreEqual(4, result.TrajectoryStation.Count);
            AssertObjectGrowingStatus(result, wellboreResult, changeHistory, true);
            DevKit.AssertChangeLog(result, 2, ChangeInfoType.update);

            station1.Azi.Value++;

            // Update2 with new station and object growing, no entry in change log
            var newStation2 = new TrajectoryStation
            {
                Uid = "sta-5",
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 10
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            update = new Trajectory
            {
                Uid               = Trajectory.Uid,
                UidWell           = Trajectory.UidWell,
                UidWellbore       = Trajectory.UidWellbore,
                TrajectoryStation = new List <TrajectoryStation> {
                    newStation2
                }
            };

            DevKit.UpdateAndAssert <TrajectoryList, Trajectory>(update);

            result         = DevKit.GetAndAssert(Trajectory);
            wellboreResult = DevKit.GetAndAssert(Wellbore);
            var changeHistoryList = DevKit.GetAndAssertChangeLogHistory(result.GetUri(), false);

            changeHistory = changeHistoryList.Last();

            // No changes to change log
            Assert.AreEqual(5, result.TrajectoryStation.Count);
            AssertObjectGrowingStatus(result, wellboreResult, changeHistory, true);
            Assert.AreEqual(2, changeHistoryList.Count);

            // Expire growing objects, add change history with object growing set to false
            WitsmlSettings.TrajectoryGrowingTimeoutPeriod = GrowingTimeoutPeriod;
            Thread.Sleep(GrowingTimeoutPeriod * 1000);

            DevKit.Container.Resolve <ObjectGrowingManager>().ExpireGrowingObjects();

            result         = DevKit.GetAndAssert(Trajectory);
            wellboreResult = DevKit.GetAndAssert(Wellbore);
            changeHistory  = DevKit.GetAndAssertChangeLogHistory(result.GetUri()).First();

            DevKit.AssertChangeLog(result, 3, ChangeInfoType.update);
            AssertObjectGrowingStatus(result, wellboreResult, changeHistory, false);
        }
        public void GrowingObject141DataAdapter_UpdateInStore_Append_Data_ExpireGrowingObjects()
        {
            //Add parents
            AddParents();

            //Add log
            Log.StartIndex = new GenericMeasure(5, "m");
            AddLogWithData(Log, LogIndexType.measureddepth, 10);

            var addedLog       = DevKit.GetAndAssert(Log);
            var wellboreResult = DevKit.GetAndAssert(Wellbore);

            Assert.IsFalse(addedLog.ObjectGrowing.GetValueOrDefault());
            Assert.IsFalse(wellboreResult.IsActive.GetValueOrDefault());

            // Add trajectory with stations
            AddTrajectoryWithData(Trajectory, 3, 5);

            var addedTrajectory = DevKit.GetAndAssert(Trajectory);

            wellboreResult = DevKit.GetAndAssert(Wellbore);
            Assert.IsFalse(addedTrajectory.ObjectGrowing.GetValueOrDefault());
            Assert.IsFalse(wellboreResult.IsActive.GetValueOrDefault());

            //update log
            CreateAndUpdateLogData(Log, LogIndexType.measureddepth, new GenericMeasure(17, "m"), 6);

            var updatedLog = DevKit.GetAndAssert(Log);

            wellboreResult = DevKit.GetAndAssert(Wellbore);
            Assert.IsTrue(updatedLog.ObjectGrowing.GetValueOrDefault(), "Log ObjectGrowing");
            Assert.IsTrue(wellboreResult.IsActive.GetValueOrDefault(), "Log-Well IsActive");

            //update trajectory
            var station1 = Trajectory.TrajectoryStation.FirstOrDefault();

            Assert.IsNotNull(station1);
            station1.Azi.Value++;

            var newStation = new TrajectoryStation
            {
                Uid = "sta-4",
                MD  = new MeasuredDepthCoord {
                    Uom = MeasuredDepthUom.m, Value = 10
                },
                TypeTrajStation = station1.TypeTrajStation,
                Azi             = station1.Azi,
            };

            CreateAndUpdateTrajectoryStations(Trajectory, new List <TrajectoryStation> {
                newStation
            });

            var updatedTrajectory = DevKit.GetAndAssert(Trajectory);

            wellboreResult = DevKit.GetAndAssert(Wellbore);
            Assert.IsTrue(updatedTrajectory.ObjectGrowing.GetValueOrDefault(), "Trajectory ObjectGrowing");
            Assert.IsTrue(wellboreResult.IsActive.GetValueOrDefault(), "Trajectory-Well IsActive");

            //Change settings and wait
            WitsmlSettings.LogGrowingTimeoutPeriod        = GrowingTimeoutPeriod;
            WitsmlSettings.TrajectoryGrowingTimeoutPeriod = GrowingTimeoutPeriod;
            Thread.Sleep(GrowingTimeoutPeriod * 1000);

            //Expire objects
            DevKit.Container.Resolve <ObjectGrowingManager>().ExpireGrowingObjects();

            updatedLog        = DevKit.GetAndAssert(Log);
            updatedTrajectory = DevKit.GetAndAssert(Trajectory);
            wellboreResult    = DevKit.GetAndAssert(Wellbore);

            Assert.IsFalse(updatedLog.ObjectGrowing.GetValueOrDefault(), "Log ObjectGrowing");
            Assert.IsFalse(updatedTrajectory.ObjectGrowing.GetValueOrDefault(), "Trajectory ObjectGrowing ");
            Assert.IsFalse(wellboreResult.IsActive.GetValueOrDefault(), "IsActive");
        }
Ejemplo n.º 13
0
        private static IDataObject ToDataObject(IEtpAdapter etpAdapter, Trajectory entity, TrajectoryStation trajectoryStation)
        {
            var dataObject = etpAdapter.CreateDataObject();

            if (entity == null || trajectoryStation == null)
            {
                return(dataObject);
            }

            var uri      = entity.GetUri();
            var childUri = uri.Append(ObjectTypes.TrajectoryStation, trajectoryStation.Uid);

            etpAdapter.SetDataObject(dataObject, trajectoryStation, childUri, entity.Citation.Title, 0, compress: false);

            return(dataObject);
        }