20 private string m_filePath;
23 private string m_graphHeader;
24 private bool m_containsNoData;
45 while(m_handle.ReadLine(line) > 0)
51 m_containsNoData = lineCount < 2;
55 m_containsNoData =
true;
57 m_handle =
FileIO.OpenFile(m_filePath, mode);
61 void ~MeasurementFile()
65 if(IsChart() && m_containsNoData && m_graphHeader.Length() > 0)
66 m_handle.WriteLine(m_graphHeader);
78 string GetFilePath() {
return m_filePath; }
82 void SetGraphHeader(
string header)
86 m_graphHeader = header;
92 void AddData(
string line)
96 if(IsChart() && m_containsNoData)
98 if(m_graphHeader.Length() > 0)
99 m_handle.WriteLine(m_graphHeader);
102 array<string> arr =
new array<string>();
103 line.Split(
",", arr,
true);
105 string artificialHeader;
106 for(
int i = 0; i < arr.Count(); ++i)
109 artificialHeader =
string.Format(
"%1,%2", artificialHeader, i);
111 artificialHeader =
string.Format(
"%1", i);
113 m_handle.WriteLine(artificialHeader);
117 m_containsNoData =
false;
118 m_handle.WriteLine(line);
134 void AddHeader(
string measurementTitle)
136 if(!m_handle || !m_containsNoData)
141 m_handle.WriteLine(
string.Format(
"%1;%2;heatmap",
m_parent.GetAutotestPageName(), measurementTitle));
142 m_handle.WriteLine(
"x,y,FPS");
145 m_handle.WriteLine(
string.Format(
"%1;%2;chart;line",
m_parent.GetAutotestPageName(), measurementTitle));
147 m_handle.WriteLine(
string.Format(
"%1;%2+chart;bar",
m_parent.GetAutotestPageName(), measurementTitle));
149 m_handle.WriteLine(
string.Format(
"%1;%2;html",
m_parent.GetAutotestPageName(), measurementTitle));
151 m_handle.WriteLine(
string.Format(
"%1;%2;file",
m_parent.GetAutotestPageName(), measurementTitle));
153 m_handle.WriteLine(
string.Format(
"%1;%2;gallery",
m_parent.GetAutotestPageName(), measurementTitle));
159class AutotestRegister
163 protected string m_worldFileFolder;
164 protected string m_autotestPageName;
166 protected int m_testIndex = 0;
175 void Init(
string pageName)
177 m_autotestPageName = pageName;
179 m_worldFileFolder =
"$logs:";
181 string mutliTestFile =
string.Format(
"%1/%2", m_worldFileFolder,
"last_test_index.log");
183 if(FileIO.FileExists(mutliTestFile))
185 tmp = FileIO.OpenFile(mutliTestFile,
FileMode.READ);
188 m_testIndex = line.ToInt() + 1;
192 tmp = FileIO.OpenFile(mutliTestFile,
FileMode.WRITE);
195 tmp.WriteLine(
string.Format(
"%1", m_testIndex));
201 string GetAutotestPageName() {
return m_autotestPageName; }
204 string GetWorldFileFolderPath() {
return m_worldFileFolder; }
216 bool DoesMeasurementExist(
string name)
218 return FileIO.FileExists(CreateMeasurementFilePath(name));
226 MeasurementFile OpenMeasurementFile(
string name,
string measurementTitle,
MeasurementType type,
bool overwriteExisting =
true)
230 string measurementFilePath = CreateMeasurementFilePath(name);
231 if(overwriteExisting || !FileIO.FileExists(measurementFilePath))
233 ret =
new MeasurementFile(
this, measurementFilePath,
FileMode.WRITE,
type);
234 ret.AddHeader(measurementTitle);
238 ret =
new MeasurementFile(
this, measurementFilePath,
FileMode.APPEND,
type);
246 void UploadLogFileWithResults()
248 string logFilePath =
string.Format(
"%1/console.log", m_worldFileFolder);
249 if(!FileIO.FileExists(logFilePath))
251 FileHandle logFileHandle = FileIO.OpenFile(logFilePath,
FileMode.WRITE);
252 logFileHandle.WriteLine(
"Missing log file");
253 logFileHandle.Close();
256 ref MeasurementFile logFileUploader = OpenMeasurementFile(
"zzz_console_log_upload",
"Console log",
MeasurementType.File);
257 logFileUploader.AddData(logFilePath);
261 void SavePersistentData(
string name,
string data)
263 FileHandle tmp = FileIO.OpenFile(CreatePersistentFilePath(name),
FileMode.WRITE);
268 string LoadPersistentData(
string name)
270 FileHandle tmp = FileIO.OpenFile(CreatePersistentFilePath(name),
FileMode.READ);
281 int GetNumberOfDataLines(
string measurementName)
283 FileHandle tmp = FileIO.OpenFile(CreateMeasurementFilePath(measurementName),
FileMode.READ);
288 while(tmp.ReadLine(lineContent) > 0)
296 int GetNumberOfWorldFiles()
298 array<string> files = {};
299 FileIO.FindFiles(files.Insert, m_worldFileFolder,
".ent");
300 return files.Count();
305 private string CreatePersistentFilePath(
string name)
307 return string.Format(
"%1/%2", m_worldFileFolder, name);
309 private string CreateMeasurementFilePath(
string name)
311 return string.Format(
"%1/%2.txt", m_worldFileFolder, name);
enum MeasurementType m_parent
Implementation of single measurement result file (dont forget to delete it after you are done or use ...
Get all prefabs that have the spawner data
FileMode
Mode for opening file. See FileSystem::Open.