@@ -69,14 +69,14 @@ def get_context_data(self, **kwargs):
6969 context = super (HomeView , self ).get_context_data (** kwargs )
7070 context ['show_reports' ] = settings .SHOW_REPORTS
7171 context ['show_historical' ] = settings .SHOW_HISTORICAL
72- historical_settings = ['SHOW_HISTORICAL' , 'DEF_BASELINE ' , 'DEF_EXECUTABLES' ]
72+ historical_settings = ['SHOW_HISTORICAL' , 'DEF_BASELINES ' , 'DEF_EXECUTABLES' ]
7373 if not all (getattr (settings , var ) for var in historical_settings ):
7474 context ['show_historical' ] = False
7575 return context
7676
7777 try :
7878 baseline_exe = Executable .objects .get (
79- name = settings .DEF_BASELINE ['executable' ])
79+ name = settings .DEF_BASELINES [ 0 ] ['executable' ])
8080 context ['baseline' ] = baseline_exe
8181 def_name = settings .DEF_EXECUTABLES [0 ]['name' ]
8282 def_project = Project .objects .get (name = settings .DEF_EXECUTABLES [0 ]['project' ])
@@ -101,22 +101,23 @@ def gethistoricaldata(request):
101101 env = env .first ()
102102
103103 # Fetch Baseline data, filter by executable
104- baseline_exe = Executable .objects .get (
105- name = settings .DEF_BASELINE ['executable' ])
106- tag = settings .DEF_BASELINE ['revision' ]
107- rev = Revision .objects .filter (branch__project = baseline_exe .project , tag = tag )
108- if len (rev ) < 1 :
109- return HttpResponse (json .dumps (
110- f"Could not find { tag = } for { settings .DEF_BASELINE ['executable' ]} in database" )
111- )
112- rev0 = rev [0 ]
113- baseline_results = Result .objects .filter (
114- executable = baseline_exe , revision = rev0 , environment = env )
115- if not baseline_results :
116- logger .error ('Could not find results for {} rev="{}" env="{}"' .format (
117- baseline_exe , rev0 , env ))
118- data ['baseline' ] = '{} {}' .format (
119- settings .DEF_BASELINE ['executable' ], rev0 .tag )
104+ baseline_results = []
105+ for b in settings .DEF_BASELINES :
106+ baseline_exe = Executable .objects .get (
107+ name = b ['executable' ])
108+ tag = b ['revision' ]
109+ rev = Revision .objects .filter (branch__project = baseline_exe .project , tag = tag )
110+ if len (rev ) < 1 :
111+ return HttpResponse (json .dumps (
112+ f"Could not find { tag = } for { b ['executable' ]} in database" )
113+ )
114+ rev0 = rev [0 ]
115+ resname = '{} {}' .format (b ['executable' ], rev0 .tag )
116+ baseline_results .append ((resname , Result .objects .filter (
117+ executable = baseline_exe , revision = rev0 , environment = env )))
118+ if not baseline_results [- 1 ][1 ]:
119+ logger .error ('Could not find results for {} rev="{}" env="{}"' .format (
120+ baseline_exe , rev0 , env ))
120121
121122 default_results = {}
122123 all_taggedrevs = []
@@ -163,17 +164,30 @@ def gethistoricaldata(request):
163164
164165 # Collect data
165166 benchmarks = []
166- for res in baseline_results :
167+ # Collate first baseline and all the default_results
168+ resset = baseline_results [0 ][1 ]
169+ resname = baseline_results [0 ][0 ]
170+ data ['baseline' ] = resname
171+ for res in resset :
167172 if res == 0 :
168173 continue
169174 benchmarks .append (res .benchmark .name )
170- data ['results' ][res .benchmark .name ] = {data [ 'baseline' ] : res .value }
175+ data ['results' ][res .benchmark .name ] = {resname : res .value }
171176 for rev_name in default_results :
172177 val = 0
173178 for default_res in default_results [rev_name ]:
174179 if default_res .benchmark .name == res .benchmark .name :
175180 val = default_res .value
176- data ['results' ][res .benchmark .name ][rev_name ] = val
181+ data ['results' ][res .benchmark .name ][rev_name ] = val
182+ # Collate other baseline
183+ for resname , resset in baseline_results [1 :]:
184+ for res in resset :
185+ if res == 0 :
186+ continue
187+ if not res .benchmark .name in data ['results' ]:
188+ continue
189+ data ['results' ][res .benchmark .name ][resname ] = res .value
190+ data ['tagged_revs' ].insert (0 , resname )
177191 benchmarks .sort ()
178192 data ['benchmarks' ] = benchmarks
179193 return HttpResponse (json .dumps (data ))
0 commit comments