Browse Source

compose top: ensure CMD is right-most column

Signed-off-by: Dominik Menke <[email protected]>
Dominik Menke 11 months ago
parent
commit
80e8fda14f
2 changed files with 23 additions and 8 deletions
  1. 15 0
      cmd/compose/top.go
  2. 8 8
      cmd/compose/top_test.go

+ 15 - 0
cmd/compose/top.go

@@ -101,6 +101,21 @@ func collectTop(containers []api.ContainerProcSummary) (topHeader, []topEntries)
 			entries = append(entries, entry)
 		}
 	}
+
+	// ensure CMD is the right-most column
+	if pos, ok := header["CMD"]; ok {
+		max := pos
+		for h, i := range header {
+			if i > max {
+				max = i
+			}
+			if i > pos {
+				header[h] = i - 1
+			}
+		}
+		header["CMD"] = max
+	}
+
 	return header, entries
 }
 

+ 8 - 8
cmd/compose/top_test.go

@@ -245,8 +245,8 @@ func TestRunTopCore(t *testing.T) {
 			"STIME":   6,
 			"TTY":     7,
 			"TIME":    8,
-			"CMD":     9,
-			"GID":     10,
+			"GID":     9,
+			"CMD":     10,
 		}, header)
 		assert.EqualValues(t, []topEntries{
 			{
@@ -311,12 +311,12 @@ func TestRunTopCore(t *testing.T) {
 		err := topPrint(&buf, header, entries)
 		require.NoError(t, err)
 		assert.Equal(t, trim(`
-			SERVICE     #    UID    PID   PPID   C    STIME   TTY   TIME       CMD              GID
-			simple      1    root   1     1      0    12:00   ?     00:00:01   /entrypoint      -
-			noppid      1    root   1     -      0    12:00   ?     00:00:02   /entrypoint      -
-			extra-hdr   1    root   1     1      0    12:00   ?     00:00:03   /entrypoint      1
-			multiple    1    root   1     1      0    12:00   ?     00:00:04   /entrypoint      -
-			multiple    1    root   123   1      0    12:00   ?     00:00:42   sleep infinity   -
+			SERVICE     #    UID    PID   PPID   C    STIME   TTY   TIME       GID   CMD
+			simple      1    root   1     1      0    12:00   ?     00:00:01   -     /entrypoint
+			noppid      1    root   1     -      0    12:00   ?     00:00:02   -     /entrypoint
+			extra-hdr   1    root   1     1      0    12:00   ?     00:00:03   1     /entrypoint
+			multiple    1    root   1     1      0    12:00   ?     00:00:04   -     /entrypoint
+			multiple    1    root   123   1      0    12:00   ?     00:00:42   -     sleep infinity
 		`), buf.String())
 
 	})