public void Top_In_Inbound_List_Test() { var dtn = DateTime.Now; var checkedItem = new PriceProcessItem(false, 5, null, 1, "jjj.AAA", null) { CreateTime = dtn.AddMinutes(50) }; PriceItemList.AddItem(new PriceProcessItem(false, 1, null, 1, "jjj.123", null) { CreateTime = dtn.AddMinutes(10) }); PriceItemList.AddItem(checkedItem); PriceItemList.AddItem(new PriceProcessItem(true, 2, null, 1, "jjj.345", null) { CreateTime = dtn.AddMinutes(100) }); PriceItemList.AddItem(new PriceProcessItem(true, 3, null, 1, "jjj.789", null) { CreateTime = dtn.AddMinutes(100) }); Assert.AreEqual(checkedItem.CreateTime, dtn.AddMinutes(50)); var wcf = new WCFPriceProcessorService(); wcf.TopInInboundList(checkedItem.GetHashCode()); Assert.AreEqual(checkedItem.CreateTime, dtn.AddMinutes(10).AddSeconds(-5)); }
private void AddPriceFileToList(string priceFile, bool ignoreDownloaded) { //Если файл имеет префикс "d", то значит он был закачан, поэтому он уже в очереди на обработку if (ignoreDownloaded && PriceProcessItem.IsDownloadedPrice(priceFile)) { return; } var item = PriceProcessItem.TryToLoadPriceProcessItem(priceFile); if (item != null) { if (!PriceItemList.AddItem(item)) { //todo: здесь не понятно, что надо делать, т.к. прайс-лист не добавили по причине скаченного нового. Сейчас удаляю try { global::Common.Tools.FileHelper.FileDelete(priceFile); } catch (Exception ex) { _logger.ErrorFormat("Не получилось удалить файл для формализации {0}\r\n{1}", priceFile, ex); } } } else { _logger.WarnFormat(Settings.Default.UnknownPriceError, Path.GetFileName(priceFile)); try { global::Common.Tools.FileHelper.FileDelete(priceFile); } catch (Exception ex) { _logger.ErrorFormat("Не получилось удалить неизвестный файл {0}\r\n{1}", priceFile, ex); } } }
public void GetAllNamesTest() { var supplier = TestSupplier.CreateNaked(); var price = supplier.Prices[0]; priceItem = price.Costs.First().PriceItem; var format = price.Costs.Single().PriceItem.Format; format.PriceFormat = PriceFormatType.NativeDelim; format.Delimiter = ";"; format.FName1 = "F2"; format.FFirmCr = "F3"; format.FQuantity = "F5"; format.FRequestRatio = "F6"; var costFormRule = price.Costs.Single().FormRule; costFormRule.FieldName = "F4"; session.Save(price); Close(); File.Copy(Path.GetFullPath(@"..\..\Data\222.txt"), Path.Combine(basepath, priceItem.Id + ".txt")); var item = PriceProcessItem.GetProcessItem(priceItem.Id); var names = item.GetAllNames(); Assert.That(names.Count(), Is.EqualTo(35)); }
public void Do_not_put_more_than_one_price_with_same_setting_to_formalization() { Settings.Default.MaxRetransThread = 3; var item = new PriceProcessItem(false, 1, 1, 1, "1.txt", null); item.CreateTime = item.CreateTime.AddMinutes(-10); File.WriteAllText("1.txt", ""); PriceItemList.list.Add(item); item = new PriceProcessItem(false, 3, 3, 3, "2.txt", null); item.CreateTime = item.CreateTime.AddMinutes(-10); File.WriteAllText("3.txt", ""); PriceItemList.list.Add(item); item = new PriceProcessItem(false, 2, 2, 2, "2.txt", 1); item.CreateTime = item.CreateTime.AddMinutes(-10); File.WriteAllText("2.txt", ""); PriceItemList.list.Add(item); handler.ProcessData(); Assert.That(handler.Threads.Count, Is.EqualTo(3)); Assert.IsTrue(handler.FindByPriceItemId(1)); Assert.IsTrue(handler.FindByPriceItemId(3)); Assert.That(handler.Threads[0].ProcessItem.PriceCode, Is.EqualTo(1)); Assert.That(handler.Threads[1].ProcessItem.PriceCode, Is.EqualTo(3)); }
public void Parse_price_item_id() { var id = PriceProcessItem.ParseId(".db"); Assert.That(id, Is.EqualTo(0)); id = PriceProcessItem.ParseId("1.db"); Assert.That(id, Is.EqualTo(1)); Assert.That(PriceProcessItem.ParseId("d1287_9972279.txt"), Is.EqualTo(1287)); }
public void IsReadyForProcessing() { var item = new PriceProcessItem(false, 1, 1, 1, "", 1); var processing = new List <PriceProcessThread> { new PriceProcessThread(item, "") }; Assert.That(item.IsReadyForProcessing(processing), Is.False); }
protected virtual PriceProcessItem CreatePriceProcessItem(string normalName) { var item = new PriceProcessItem(true, Convert.ToUInt64(CurrPriceCode), CurrCostCode, CurrPriceItemId, normalName, CurrParentSynonym); return(item); }
public PriceProcessThread(PriceProcessItem item, string prevErrorMessage, bool runThread = true) { StartDate = DateTime.UtcNow; ProcessItem = item; ProcessState = PriceProcessState.None; _log = new PriceProcessLogger(prevErrorMessage, item); _thread = new Thread(ThreadWork); _thread.Name = $"PPT{_thread.ManagedThreadId}"; if (runThread) { _thread.Start(); } }
public void Delete_ItemIn_Inbound_List_Test() { var checkedItem = new PriceProcessItem(false, 5, null, 1, "jjj.AAA", null); PriceItemList.AddItem(new PriceProcessItem(false, 1, null, 1, "jjj.123", null)); PriceItemList.AddItem(checkedItem); PriceItemList.AddItem(new PriceProcessItem(true, 2, null, 1, "jjj.345", null)); PriceItemList.AddItem(new PriceProcessItem(true, 3, null, 1, "jjj.789", null)); Assert.IsTrue(PriceItemList.list.Any(l => l.FilePath == "jjj.AAA")); var wcf = new WCFPriceProcessorService(); wcf.DeleteItemInInboundList(checkedItem.GetHashCode()); Assert.IsFalse(PriceItemList.list.Any(l => l.FilePath == "jjj.AAA")); }
public void SortListTest() { var a = new PriceProcessItem(true, 1, 1, 1, "test.txt", null); a.FileTime = DateTime.Now.AddHours(-1); PriceItemList.AddItem(a); var b = new PriceProcessItem(true, 1, 1, 1, "test.txt", null); b.FileTime = DateTime.Now; PriceItemList.AddItem(b); PriceProcessItem c = PriceItemList.GetLastestDownloaded(1); Assert.AreEqual(c, b, "Последний добавленный прайс-лист выбран некорреткно."); }
public void Respect_file_extension() { var supplier = TestSupplier.CreateNaked(); var price = supplier.Prices[0]; priceItem = price.Costs.First().PriceItem; var format = price.Costs.Single().PriceItem.Format; format.PriceFormat = PriceFormatType.UniversalXml; session.Save(price); Close(); File.Copy(Path.GetFullPath(@"..\..\Data\222.txt"), Path.Combine(basepath, priceItem.Id + ".txt")); File.Copy(Path.GetFullPath(@"..\..\Data\Respect_file_extension.xml"), Path.Combine(basepath, priceItem.Id + ".xml")); var item = PriceProcessItem.GetProcessItem(priceItem.Id); var names = item.GetAllNames(); Assert.That(names.Count(), Is.EqualTo(2)); }
public void Get_all_names() { var basepath = Settings.Default.BasePath; if (!Directory.Exists(basepath)) { Directory.CreateDirectory(basepath); } var source = Path.GetFullPath(@"..\..\Data\FarmaimpeksPrice.xml"); var destination = Path.GetFullPath(Path.Combine(basepath, priceItem.Id.ToString() + ".xml")); File.Copy(source, destination); var item = PriceProcessItem.GetProcessItem(priceItem.Id); var names = item.GetAllNames(); Assert.That(names.Count(), Is.EqualTo(9818)); }
public void CatchWarningFormalizeExceptionTest() { var priceItemId = CatchWarningFormalizeExceptionTestPrepareData(); var priceProcessItem = new PriceProcessItem(false, 0, null, priceItemId, @"Data\781.dbf", null); var priceProcessThread = new PriceProcessThread(priceProcessItem, String.Empty, false); var outPriceFileName = Path.Combine(Settings.Default.BasePath, priceProcessItem.PriceItemId + Path.GetExtension(priceProcessItem.FilePath)); Common.Tools.FileHelper.InitDir(Settings.Default.BasePath); FlushAndCommit(); priceProcessThread.ThreadWork(); Assert.False(String.IsNullOrEmpty(priceProcessThread.CurrentErrorMessage), "Отсутствует информация о произошедшем исключении"); Assert.True(priceProcessThread.FormalizeOK, "Формализация закончилась с ошибкой"); var logs = Inforoom.PriceProcessor.Models.FormLog.Queryable .Where(l => l.PriceItemId == priceItemId && l.ResultId == (int?)FormResults.Error) .ToList(); Assert.That(logs.Implode(x => x.Addition), Does.Contain("Прайс отключен по причине : FirmStatus"), "Информация о предупреждении отсутствует в БД"); //Проверяем, что копирование файла прошло успешно Assert.IsTrue(File.Exists(outPriceFileName)); }
/// <summary> /// Поиск рабочей нити по элементу PriceProcessItem /// </summary> /// <param name="item">Ссылка на элемент PriceProcessItem, по которому осуществляетс поиск</param> /// <returns>Найденая нитка или null</returns> private PriceProcessThread FindByProcessItem(PriceProcessItem item) { return(pt.Find(thread => (thread.ProcessItem == item))); }
public void Ignore_non_price_files() { var item = PriceProcessItem.TryToLoadPriceProcessItem("Thumbs.db"); Assert.That(item, Is.Null); }
public PriceProcessLogger(string prevErrorMessage, PriceProcessItem priceProcessItem) { _prevErrorMessage = prevErrorMessage; _processItem = priceProcessItem; begin = DateTime.Now; }