예제 #1
0
        public virtual void AddData(SequenceResultData sequenceResult)
        {
            Dictionary <string, string> columnToValue = DataModelMapper.GetColumnValueMapping(sequenceResult);
            string cmd = SqlCommandFactory.CreateInsertCmd(DataBaseItemNames.SequenceTableName, columnToValue);

            ExecuteWriteCommand(cmd);
        }
예제 #2
0
        private void PrintSequenceResults(StreamWriter sw, string runtimeHash, int sessionId)
        {
            IList <SequenceResultData> sequenceResultList = _dataMaintainer.GetSequenceResults(runtimeHash, sessionId);
            //List中循环每个sequence
            SequenceResultData teardownResult = sequenceResultList.FirstOrDefault(item => item.SequenceIndex == CommonConst.TeardownIndex);

            sequenceResultList.Remove(teardownResult);
            sequenceResultList.Add(teardownResult);
            foreach (SequenceResultData sequenceResult in sequenceResultList)
            {
                WriteRecord(sw, 2, "SequenceName", sequenceResult.Name);
                WriteRecord(sw, 2, "SequenceDescription", sequenceResult.Description);
                WriteRecord(sw, 2, "SequenceIndex", sequenceResult.SequenceIndex.ToString());
                WriteRecord(sw, 2, "SequenceResult", sequenceResult.Result.ToString());
                WriteRecord(sw, 2, "StartTime", sequenceResult.StartTime.ToString(DateFormat));
                WriteRecord(sw, 2, "EndTime", sequenceResult.EndTime.ToString(DateFormat));
                WriteRecord(sw, 2, "ElapsedTime", (sequenceResult.ElapsedTime / 1000).ToString(DoubleFormat));
                if (sequenceResult.Result == Runtime.RuntimeState.Failed && null != sequenceResult.FailInfo)
                {
                    WriteRecord(sw, 2, "FailedInfo", sequenceResult.FailInfo.Message);
                    WriteRecord(sw, 2, "FailedStack", sequenceResult.FailStack);
                }
                PrintRuntimeStatus(sw, runtimeHash, sessionId, sequenceResult.SequenceIndex);
                sw.WriteLine();
            }
        }
예제 #3
0
        public virtual IList <SequenceResultData> GetSequenceResults(string runtimeHash, int sessionId)
        {
            string filter = $"{DataBaseItemNames.RuntimeIdColumn}='{runtimeHash}' AND {DataBaseItemNames.SessionIdColumn}={sessionId}";
            string cmd    = SqlCommandFactory.CreateQueryCmd(filter, DataBaseItemNames.SequenceTableName);

            using (DbDataReader dataReader = ExecuteReadCommand(cmd))
            {
                List <SequenceResultData> resultDatas = new List <SequenceResultData>(10);
                while (dataReader.Read())
                {
                    SequenceResultData sequenceResultData = new SequenceResultData();
                    DataModelMapper.ReadToObject(dataReader, sequenceResultData);
                    resultDatas.Add(sequenceResultData);
                }
                return(resultDatas);
            }
        }
예제 #4
0
        public virtual void UpdateData(SequenceResultData sequenceResult)
        {
            SequenceResultData lastSequenceResult = InternalGetSequenceResultData(sequenceResult.RuntimeHash,
                                                                                  sequenceResult.Session, sequenceResult.SequenceIndex);


            Dictionary <string, string> lastSequenceValues = DataModelMapper.GetColumnValueMapping(lastSequenceResult);

            Dictionary <string, string> columnToValue = DataModelMapper.GetColumnValueMapping(sequenceResult);

            string filter =
                $"{DataBaseItemNames.RuntimeIdColumn}='{sequenceResult.RuntimeHash}' AND {DataBaseItemNames.SessionIdColumn}={sequenceResult.Session} AND {DataBaseItemNames.SequenceIndexColumn}={sequenceResult.SequenceIndex}";

            string cmd = SqlCommandFactory.CreateUpdateCmd(DataBaseItemNames.SequenceTableName, lastSequenceValues,
                                                           columnToValue, filter);

            ExecuteWriteCommand(cmd);
        }
예제 #5
0
        protected SequenceResultData InternalGetSequenceResultData(string runtimeHash, int sessionId, int sequenceIndex)
        {
            string filter =
                $"{DataBaseItemNames.RuntimeIdColumn}='{runtimeHash}' AND {DataBaseItemNames.SessionIdColumn}={sessionId} AND " +
                $"{DataBaseItemNames.SequenceIndexColumn}={sequenceIndex}";
            string cmd = SqlCommandFactory.CreateQueryCmd(filter, DataBaseItemNames.SequenceTableName);

            using (DbDataReader dataReader = ExecuteReadCommand(cmd))
            {
                SequenceResultData sequenceResultData = null;
                if (dataReader.Read())
                {
                    sequenceResultData = new SequenceResultData();
                    DataModelMapper.ReadToObject(dataReader, sequenceResultData);
                }
                return(sequenceResultData);
            }
        }
예제 #6
0
        private static SequenceResultData CreateSequenceResult(int instanceId, int sessionid, int sequence)
        {
            SequenceResultData sequenceResult = new SequenceResultData()
            {
                RuntimeHash   = $"RuntimeHash{instanceId}",
                Name          = $"Session{sessionid}",
                Description   = $"InstanceDescription{sessionid}",
                Session       = sessionid,
                SequenceIndex = sequence,
                Result        = RuntimeState.Success,
                StartTime     = DateTime.Now - new TimeSpan(0, 0, 1, 1),
                EndTime       = DateTime.Now - new TimeSpan(0, 0, 0, 1),
                ElapsedTime   = 10000,
                FailInfo      = null,
                FailStack     = ""
            };

            return(sequenceResult);
        }
예제 #7
0
        public SequenceStateHandle(int session, ISequence sequence, StateManageContext stateManageContext)
        {
            this.Session             = session;
            this._sequence           = sequence;
            this.SequenceIndex       = sequence.Index;
            this.State               = RuntimeState.Idle;
            this._eventDispatcher    = stateManageContext.EventDispatcher;
            this._stateManageContext = stateManageContext;
            this.BlockedTime         = TimeSpan.Zero;
            this._blockedStart       = DateTime.MaxValue;
            this.RunStack            = CallStack.GetEmptyStack(session, sequence.Index);

            _sequenceTestResult = this._stateManageContext.GetSequenceResults(Session, SequenceIndex);
            _sequenceResultData = new SequenceResultData()
            {
                Name          = sequence.Name,
                Description   = sequence.Description,
                StartTime     = DateTime.MaxValue,
                EndTime       = DateTime.MaxValue,
                CoroutineId   = -1,
                ElapsedTime   = 0,
                RuntimeHash   = stateManageContext.RuntimeHash,
                FailInfo      = null,
                Result        = RuntimeState.Idle,
                FailStack     = null,
                Session       = session,
                SequenceIndex = sequence.Index,
            };
            _stateManageContext.DatabaseProxy.WriteData(_sequenceResultData);
            _statusData = new RuntimeStatusData()
            {
                RuntimeHash = _stateManageContext.RuntimeHash,
                Sequence    = this.SequenceIndex,
                Session     = Session,
                Stack       = string.Empty,
                Time        = CurrentTime,
                ElapsedTime = this.ElapsedTime.TotalMilliseconds,
                Result      = StepResult.NotAvailable,
                WatchData   = null,
                StatusIndex = -1
            };
        }
예제 #8
0
        public ResultManagerTest()
        {
            #region 创建并初始化假的TestFlowRunner, 将创建的DataMaintainer赋予它
            Type runnerType = typeof(TestflowRunner);
            //默认options
            TestflowRunnerOptions option = new TestflowRunnerOptions();
            //创建假的TestFlowRunner
            FakeTestflowRunner fakeTestflowRunner = new FakeTestflowRunner(option);
            Type intType = typeof(int);
            //用反射将获取private fieldInfo,然后赋值fake
            FieldInfo fieldInfo = runnerType.GetField("_runnerInst", BindingFlags.Static | BindingFlags.NonPublic);
            fieldInfo.SetValue(null, fakeTestflowRunner);
            _dataMaintainer = new DataMaintainer.DataMaintainer();
            fakeTestflowRunner.SetDataMaintainer(_dataMaintainer);

            fakeTestflowRunner.Initialize();
            #endregion

            _resultManager = new ResultManager.ResultManager();

            #region 用此类里的方法创建测试用数据
            _testInstanceData1     = CreateTestInstance(1);
            _sessionResultData11   = CreateSessionResult(1, 1);
            _sequenceResultData111 = CreateSequenceResult(1, 1, 1);
            _sequenceResultData112 = CreateSequenceResult(1, 1, 2);
            _runtimeStatusData1111 = CreateRuntimeStatusData(1, 1, 1, 1);
            _runtimeStatusData1112 = CreateRuntimeStatusData(1, 1, 2, 2);
            _sessionResultData12   = CreateSessionResult(1, 2);
            _sequenceResultData121 = CreateSequenceResult(1, 2, 1);
            _sequenceResultData122 = CreateSequenceResult(1, 2, 2);
            _runtimeStatusData1211 = CreateRuntimeStatusData(1, 2, 1, 3);
            _runtimeStatusData1212 = CreateRuntimeStatusData(1, 2, 2, 4);
            _performanceStatus111  = CreatePerformanceData(1, 1, 1);
            _performanceStatus112  = CreatePerformanceData(1, 1, 2);
            _performanceStatus121  = CreatePerformanceData(1, 2, 3);
            _performanceStatus122  = CreatePerformanceData(1, 2, 4);

            _testInstanceData2     = CreateTestInstance(2);
            _sessionResultData21   = CreateSessionResult(2, 1);
            _sequenceResultData211 = CreateSequenceResult(2, 1, 1);
            _sequenceResultData212 = CreateSequenceResult(2, 1, 2);
            _runtimeStatusData2111 = CreateRuntimeStatusData(2, 1, 1, 1);
            _runtimeStatusData2112 = CreateRuntimeStatusData(2, 1, 2, 2);
            _sessionResultData22   = CreateSessionResult(2, 2);
            _sequenceResultData221 = CreateSequenceResult(2, 2, 1);
            _sequenceResultData222 = CreateSequenceResult(2, 2, 2);
            _runtimeStatusData2211 = CreateRuntimeStatusData(2, 2, 1, 3);
            _runtimeStatusData2212 = CreateRuntimeStatusData(2, 2, 2, 4);
            _performanceStatus211  = CreatePerformanceData(2, 1, 1);
            _performanceStatus212  = CreatePerformanceData(2, 1, 2);
            _performanceStatus221  = CreatePerformanceData(2, 2, 3);
            _performanceStatus222  = CreatePerformanceData(2, 2, 4);
            #endregion

            #region 初始化_dataMaintainer
            // 只有DesigntimeInitialize可以删掉记录
            _dataMaintainer.DesigntimeInitialize();
            // 删除记录
            _dataMaintainer.DeleteTestInstance($"RuntimeHash='{_testInstanceData1.RuntimeHash}'");
            _dataMaintainer.DeleteTestInstance($"RuntimeHash='{_testInstanceData2.RuntimeHash}'");

            // 只有RuntimeInitialize可以新增记录
            _dataMaintainer.RuntimeInitialize();
            #endregion

            #region 添加数据到数据库
            _dataMaintainer.AddData(_testInstanceData1);
            _dataMaintainer.AddData(_sessionResultData11);
            _dataMaintainer.AddData(_sequenceResultData111);
            _dataMaintainer.AddData(_sequenceResultData112);
            _dataMaintainer.AddData(_sessionResultData12);
            _dataMaintainer.AddData(_sequenceResultData121);
            _dataMaintainer.AddData(_sequenceResultData122);
            _dataMaintainer.AddData(_runtimeStatusData1211);
            _dataMaintainer.AddData(_runtimeStatusData1212);
            _dataMaintainer.AddData(_runtimeStatusData1111);
            _dataMaintainer.AddData(_runtimeStatusData1112);
            _dataMaintainer.AddData(_performanceStatus111);
            _dataMaintainer.AddData(_performanceStatus112);
            _dataMaintainer.AddData(_performanceStatus121);
            _dataMaintainer.AddData(_performanceStatus122);

            _dataMaintainer.AddData(_testInstanceData2);
            _dataMaintainer.AddData(_sessionResultData21);
            _dataMaintainer.AddData(_sequenceResultData211);
            _dataMaintainer.AddData(_sequenceResultData212);
            _dataMaintainer.AddData(_sessionResultData22);
            _dataMaintainer.AddData(_sequenceResultData221);
            _dataMaintainer.AddData(_sequenceResultData222);
            _dataMaintainer.AddData(_runtimeStatusData2211);
            _dataMaintainer.AddData(_runtimeStatusData2212);
            _dataMaintainer.AddData(_runtimeStatusData2111);
            _dataMaintainer.AddData(_runtimeStatusData2112);
            _dataMaintainer.AddData(_performanceStatus211);
            _dataMaintainer.AddData(_performanceStatus212);
            _dataMaintainer.AddData(_performanceStatus221);
            _dataMaintainer.AddData(_performanceStatus222);
            #endregion
        }
예제 #9
0
 public void WriteData(SequenceResultData result)
 {
     _dataMaintainer.AddData(result);
 }
예제 #10
0
 public void UpdateData(SequenceResultData result)
 {
     _dataMaintainer.UpdateData(result);
 }
예제 #11
0
 public void WriteData(SequenceResultData result)
 {
     // TODO
 }
예제 #12
0
 public void UpdateData(SequenceResultData result)
 {
     // TODO
 }
예제 #13
0
 public override void UpdateData(SequenceResultData sequenceResult)
 {
     throw new System.InvalidOperationException();
 }
예제 #14
0
        public DataMaintainTest()
        {
            Type runnerType = typeof(TestflowRunner);
            TestflowRunnerOptions option             = new TestflowRunnerOptions();
            FakeTestflowRunner    fakeTestflowRunner = new FakeTestflowRunner(option);
            Type      intType   = typeof(int);
            FieldInfo fieldInfo = runnerType.GetField("_runnerInst", BindingFlags.Static | BindingFlags.NonPublic);

            fieldInfo.SetValue(null, fakeTestflowRunner);
            fakeTestflowRunner.SetLogService(null);

            _dataMaintainer = new DataMaintainer.DataMaintainer();
            ModuleConfigData moduleConfigData = new ModuleConfigData();

            moduleConfigData.InitExtendProperties();
            _dataMaintainer.ApplyConfig(moduleConfigData);

            _testInstanceData1     = CreateTestInstance(1);
            _sessionResultData11   = CreateSessionResult(1, 1);
            _sequenceResultData111 = CreateSequenceResult(1, 1, 1);
            _sequenceResultData112 = CreateSequenceResult(1, 1, 2);
            _runtimeStatusData1111 = CreateRuntimeStatusData(1, 1, 1, 1);
            _runtimeStatusData1112 = CreateRuntimeStatusData(1, 1, 2, 2);
            _sessionResultData12   = CreateSessionResult(1, 2);
            _sequenceResultData121 = CreateSequenceResult(1, 2, 1);
            _sequenceResultData122 = CreateSequenceResult(1, 2, 2);
            _runtimeStatusData1211 = CreateRuntimeStatusData(1, 2, 1, 3);
            _runtimeStatusData1212 = CreateRuntimeStatusData(1, 2, 2, 4);
            _performanceStatus111  = CreatePerformanceData(1, 1, 1);
            _performanceStatus112  = CreatePerformanceData(1, 1, 2);
            _performanceStatus121  = CreatePerformanceData(1, 2, 3);
            _performanceStatus122  = CreatePerformanceData(1, 2, 4);

            _testInstanceData2     = CreateTestInstance(2);
            _sessionResultData21   = CreateSessionResult(2, 1);
            _sequenceResultData211 = CreateSequenceResult(2, 1, 1);
            _sequenceResultData212 = CreateSequenceResult(2, 1, 2);
            _runtimeStatusData2111 = CreateRuntimeStatusData(2, 1, 1, 1);
            _runtimeStatusData2112 = CreateRuntimeStatusData(2, 1, 2, 2);
            _sessionResultData22   = CreateSessionResult(2, 2);
            _sequenceResultData221 = CreateSequenceResult(2, 2, 1);
            _sequenceResultData222 = CreateSequenceResult(2, 2, 2);
            _runtimeStatusData2211 = CreateRuntimeStatusData(2, 2, 1, 3);
            _runtimeStatusData2212 = CreateRuntimeStatusData(2, 2, 2, 4);
            _performanceStatus211  = CreatePerformanceData(2, 1, 1);
            _performanceStatus212  = CreatePerformanceData(2, 1, 2);
            _performanceStatus221  = CreatePerformanceData(2, 2, 3);
            _performanceStatus222  = CreatePerformanceData(2, 2, 4);

            // 只有DesigntimeInitialize可以删掉记录
            _dataMaintainer.DesigntimeInitialize();
            // 删除记录
            _dataMaintainer.DeleteTestInstance($"RuntimeHash='{_testInstanceData1.RuntimeHash}'");
            _dataMaintainer.DeleteTestInstance($"RuntimeHash='{_testInstanceData2.RuntimeHash}'");

            // 只有RuntimeInitialize可以新增记录
            _dataMaintainer.RuntimeInitialize();

            _dataMaintainer.AddData(_testInstanceData1);
            _dataMaintainer.AddData(_sessionResultData11);
            _dataMaintainer.AddData(_sequenceResultData111);
            _dataMaintainer.AddData(_sequenceResultData112);
            _dataMaintainer.AddData(_sessionResultData12);
            _dataMaintainer.AddData(_sequenceResultData121);
            _dataMaintainer.AddData(_sequenceResultData122);
            _dataMaintainer.AddData(_runtimeStatusData1211);
            _dataMaintainer.AddData(_runtimeStatusData1212);
            _dataMaintainer.AddData(_runtimeStatusData1111);
            _dataMaintainer.AddData(_runtimeStatusData1112);
            _dataMaintainer.AddData(_performanceStatus111);
            _dataMaintainer.AddData(_performanceStatus112);
            _dataMaintainer.AddData(_performanceStatus121);
            _dataMaintainer.AddData(_performanceStatus122);

            _dataMaintainer.AddData(_testInstanceData2);
            _dataMaintainer.AddData(_sessionResultData21);
            _dataMaintainer.AddData(_sequenceResultData211);
            _dataMaintainer.AddData(_sequenceResultData212);
            _dataMaintainer.AddData(_sessionResultData22);
            _dataMaintainer.AddData(_sequenceResultData221);
            _dataMaintainer.AddData(_sequenceResultData222);
            _dataMaintainer.AddData(_runtimeStatusData2211);
            _dataMaintainer.AddData(_runtimeStatusData2212);
            _dataMaintainer.AddData(_runtimeStatusData2111);
            _dataMaintainer.AddData(_runtimeStatusData2112);
            _dataMaintainer.AddData(_performanceStatus211);
            _dataMaintainer.AddData(_performanceStatus212);
            _dataMaintainer.AddData(_performanceStatus221);
            _dataMaintainer.AddData(_performanceStatus222);
        }
예제 #15
0
        public void ReadSequence()
        {
            _dataMaintainer.RuntimeInitialize();

            _sequenceResultData111.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData111);

            _sequenceResultData112.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData112);

            _sequenceResultData121.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData121);

            _sequenceResultData122.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData122);

            _sequenceResultData211.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData211);

            _sequenceResultData212.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData212);

            _sequenceResultData221.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData221);

            _sequenceResultData222.FailStack = "1_1_2";
            _dataMaintainer.UpdateData(_sequenceResultData222);

            _dataMaintainer.DesigntimeInitialize();

            IList <SequenceResultData> sequenceResultDatas1 = _dataMaintainer.GetSequenceResults(_testInstanceData1.RuntimeHash, 1);

            Assert.IsTrue(AreEqauls(_sequenceResultData111, sequenceResultDatas1[0]));
            Assert.IsTrue(AreEqauls(_sequenceResultData112, sequenceResultDatas1[1]));

            IList <SequenceResultData> sequenceResultDatas2 = _dataMaintainer.GetSequenceResults(_testInstanceData1.RuntimeHash, 2);

            Assert.IsTrue(AreEqauls(_sequenceResultData121, sequenceResultDatas2[0]));
            Assert.IsTrue(AreEqauls(_sequenceResultData122, sequenceResultDatas2[1]));

            IList <SequenceResultData> sequenceResultDatas3 = _dataMaintainer.GetSequenceResults(_testInstanceData2.RuntimeHash, 1);

            Assert.IsTrue(AreEqauls(_sequenceResultData211, sequenceResultDatas3[0]));
            Assert.IsTrue(AreEqauls(_sequenceResultData212, sequenceResultDatas3[1]));

            IList <SequenceResultData> sequenceResultDatas4 = _dataMaintainer.GetSequenceResults(_testInstanceData2.RuntimeHash, 2);

            Assert.IsTrue(AreEqauls(_sequenceResultData221, sequenceResultDatas4[0]));
            Assert.IsTrue(AreEqauls(_sequenceResultData222, sequenceResultDatas4[1]));

            SequenceResultData sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData111.RuntimeHash, _sequenceResultData111.Session, _sequenceResultData111.SequenceIndex);

            Assert.IsTrue(AreEqauls(_sequenceResultData111, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData112.RuntimeHash, _sequenceResultData112.Session, _sequenceResultData112.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData112, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData121.RuntimeHash, _sequenceResultData121.Session, _sequenceResultData121.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData121, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData122.RuntimeHash, _sequenceResultData122.Session, _sequenceResultData122.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData122, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData211.RuntimeHash, _sequenceResultData211.Session, _sequenceResultData211.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData211, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData212.RuntimeHash, _sequenceResultData212.Session, _sequenceResultData212.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData212, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData221.RuntimeHash, _sequenceResultData221.Session, _sequenceResultData221.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData221, sequenceResultData));

            sequenceResultData = _dataMaintainer.GetSequenceResult(_sequenceResultData222.RuntimeHash, _sequenceResultData222.Session, _sequenceResultData222.SequenceIndex);
            Assert.IsTrue(AreEqauls(_sequenceResultData222, sequenceResultData));
        }
예제 #16
0
 public void UpdateData(SequenceResultData sequenceResult)
 {
     _databaseProxy.UpdateData(sequenceResult);
 }
예제 #17
0
 public void AddData(SequenceResultData sequenceResult)
 {
     _databaseProxy.AddData(sequenceResult);
 }