public void CompareWithServer() { var diffFileNames = new[] { "\\mt4\\udpcommandtranslator.mq4", "\\sounds\\error.wav" }; var serverFiles = TestDataGenerator.GetServerFiles(); var ownFiles = TestDataGenerator.GetOwnFiles(); var diffs = ClientFileBrowser.CompareWithServer(serverFiles, ownFiles); Assert.AreEqual(diffFileNames.Length, diffs.Count, "Количество обновлённых файлов определено неверно"); foreach (var diffFileName in diffs) { if (!diffFileNames.Contains(diffFileName.FileName)) { Assert.Fail("не найден изменённый файл {0}", diffFileName); } } }
public void GetFileVersions() { var fileVersions = ClientFileBrowser.GetFileVersions(Logger.ErrorFormat); Assert.NotNull(fileVersions); }
private void DoCheckUpdates(object data) { try { // получить версии файлов на сервере List <FileVersion> serverFiles; try { var factory = new ChannelFactory <IUpdateManager>("IUpdateManagerBinding"); var channel = factory.CreateChannel(); var files = channel.GetFileProperties(SystemName.Terminal); serverFiles = files.Select(f => new FileVersion { FileName = f.Path + "\\" + f.Name, Date = f.TimeUpdated, Length = f.Length, HashCode = f.HashCode }).ToList(); if (serverFiles.Count == 0) { Logger.Error("Ошибка получения версий файлов на сервере"); return; } } catch (Exception ex) { Logger.Error("Ошибка получения версий файлов на сервере", ex); return; } // получить версии файлов в родном каталоге var ownFiles = ClientFileBrowser.GetFileVersions(Logger.ErrorFormat); var diffs = ClientFileBrowser.CompareWithServer(serverFiles, ownFiles); if (diffs.Count == 0) { return; } // антиспам var difHash = diffs.Sum(d => d.MakeHash()); if (lastUpdateFileDiffHash == difHash) { return; } lastUpdateFileDiffHash = difHash; // предупредить пользователя о том, что некоторые файлы нуждаются в обновлении try { EventSoundPlayer.Instance.PlayEvent(VocalizedEvent.TradeSignal); } catch (Exception ex) { Logger.Error("DoCheckUpdates() - EventSoundPlayer error", ex); } AddUrlToStatusPanelSafe(DateTime.Now, string.Format( Localizer.GetString("MessageSomeFilesOutdatedFmt"), diffs.Count), "Restart"); var listFiles = string.Join(" ", diffs.Select(d => d.FileName)); if (listFiles.Length > 255) { listFiles = listFiles.Substring(0, 252) + "..."; } ShowMsgWindowSafe(new AccountEvent( Localizer.GetString("MessageTerminalUpdateAvailable"), string.Format(Localizer.GetString("MessageNFilesOutdatedFmt"), diffs.Count) + ": " + listFiles, AccountEventCode.UpdatePending)); } catch (Exception ex) { Logger.Error("Ошибка процедуры проверки обновлений на сервере", ex); } finally { updateCheckInProgress = false; lastCheckUpdate.Touch(); } }