File tree 2 files changed +27
-2
lines changed
site/src/modules/workspaces/WorkspaceTiming
2 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -104,3 +104,17 @@ export const NavigateToStartStage: Story = {
104
104
await canvas . findByText ( "Startup Script" ) ;
105
105
} ,
106
106
} ;
107
+
108
+ // Test case for https://github.com/coder/coder/issues/15413
109
+ export const DuplicatedScriptTiming : Story = {
110
+ args : {
111
+ agentScriptTimings : [
112
+ WorkspaceTimingsResponse . agent_script_timings [ 0 ] ,
113
+ {
114
+ ...WorkspaceTimingsResponse . agent_script_timings [ 0 ] ,
115
+ started_at : "2021-09-01T00:00:00Z" ,
116
+ ended_at : "2021-09-01T00:00:00Z" ,
117
+ } ,
118
+ ] ,
119
+ } ,
120
+ } ;
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ import type {
9
9
AgentScriptTiming ,
10
10
ProvisionerTiming ,
11
11
} from "api/typesGenerated" ;
12
+ import sortBy from "lodash/sortBy" ;
13
+ import uniqBy from "lodash/uniqBy" ;
12
14
import { type FC , useState } from "react" ;
13
15
import { type TimeRange , calcDuration , mergeTimeRanges } from "./Chart/utils" ;
14
16
import { ResourcesChart , isCoderResource } from "./ResourcesChart" ;
@@ -42,11 +44,20 @@ export const WorkspaceTimings: FC<WorkspaceTimingsProps> = ({
42
44
defaultIsOpen = false ,
43
45
} ) => {
44
46
const [ view , setView ] = useState < TimingView > ( { name : "default" } ) ;
47
+ // This is a workaround to deal with the BE returning multiple timings for a
48
+ // single agent script when it should return only one. Reference:
49
+ // https://github.com/coder/coder/issues/15413#issuecomment-2493663571
50
+ const uniqScriptTimings = uniqBy (
51
+ sortBy ( agentScriptTimings , ( t ) => new Date ( t . started_at ) . getTime ( ) * - 1 ) ,
52
+ ( t ) => t . display_name ,
53
+ ) ;
45
54
const timings = [
46
55
...provisionerTimings ,
47
- ...agentScriptTimings ,
56
+ ...uniqScriptTimings ,
48
57
...agentConnectionTimings ,
49
- ] ;
58
+ ] . sort ( ( a , b ) => {
59
+ return new Date ( a . started_at ) . getTime ( ) - new Date ( b . started_at ) . getTime ( ) ;
60
+ } ) ;
50
61
const [ isOpen , setIsOpen ] = useState ( defaultIsOpen ) ;
51
62
const isLoading = timings . length === 0 ;
52
63
You can’t perform that action at this time.
0 commit comments