Mathias Fredriksson
1286904de8
test(agent): improve TestAgent_Session_TTY_MOTD_Update ( #10385 )
2023-10-23 17:32:28 +00:00
Mathias Fredriksson
8f1b4fb061
test(agent): fix service banner trim test flake ( #10384 )
2023-10-23 18:06:59 +03:00
Mathias Fredriksson
76c65b1e1b
fix(agent): send metadata in batches ( #10225 )
...
Fixes #9782
---
I recommend reviewing with ignore whitespace.
2023-10-13 17:48:25 +03:00
Mathias Fredriksson
4857d4bd55
feat(codersdk/agentsdk): use new agent metadata batch endpoint ( #10224 )
...
Part of #9782
2023-10-13 17:32:28 +03:00
Mathias Fredriksson
7eeba15d16
feat(coderd): add support for sending batched agent metadata ( #10223 )
...
Part of #9782
2023-10-13 16:37:55 +03:00
Asher
a9077812e2
fix: use UTF-8 encoding with screen ( #10190 )
...
This will make characters like ❯ and ⇣ work, for example.
2023-10-11 13:25:04 -08:00
Spike Curtis
b039dc6989
fix: correct escaping in test regex ( #10138 )
...
Fixes regex escaping. Spotted during a code read.
2023-10-10 08:42:39 +04:00
Spike Curtis
54fd350913
feat: improve logging for speedtest connections
...
part of #7963
improve connection logging for speedtest connections
2023-10-09 20:48:28 +04:00
Spike Curtis
c67db6efb0
fix: wait for bash prompt before commands ( #9882 )
...
Signed-off-by: Spike Curtis <spike@coder.com >
2023-09-27 12:26:24 +04:00
Kyle Carberry and Muhammad Atif Ali
1262eef2c0
feat: add support for coder_script ( #9584 )
...
* Add basic migrations
* Improve schema
* Refactor agent scripts into it's own package
* Support legacy start and stop script format
* Pipe the scripts!
* Finish the piping
* Fix context usage
* It works!
* Fix sql query
* Fix SQL query
* Rename `LogSourceID` -> `SourceID`
* Fix the FE
* fmt
* Rename migrations
* Fix log tests
* Fix lint err
* Fix gen
* Fix story type
* Rename source to script
* Fix schema jank
* Uncomment test
* Rename proto to TimeoutSeconds
* Fix comments
* Fix comments
* Fix legacy endpoint without specified log_source
* Fix non-blocking by default in agent
* Fix resources tests
* Fix dbfake
* Fix resources
* Fix linting I think
* Add fixtures
* fmt
* Fix startup script behavior
* Fix comments
* Fix context
* Fix cancel
* Fix SQL tests
* Fix e2e tests
* Interrupt on Windows
* Fix agent leaking script process
* Fix migrations
* Fix stories
* Fix duplicate logs appearing
* Gen
* Fix log location
* Fix tests
* Fix tests
* Fix log output
* Show display name in output
* Fix print
* Return timeout on start context
* Gen
* Fix fixture
* Fix the agent status
* Fix startup timeout msg
* Fix command using shared context
* Fix timeout draining
* Change signal type
* Add deterministic colors to startup script logs
---------
Co-authored-by: Muhammad Atif Ali <atif@coder.com >
2023-09-25 16:47:17 -05:00
Spike Curtis
70e481e7a5
fix: use terminal emulator that keeps state in ReconnectingPTY tests ( #9765 )
...
* Add more pty diagnostics for terminal parsing
Signed-off-by: Spike Curtis <spike@coder.com >
* print escaped strings
Signed-off-by: Spike Curtis <spike@coder.com >
* Only log on failure - heisenbug?
Signed-off-by: Spike Curtis <spike@coder.com >
* use the terminal across matches to keep cursor & contents state
Signed-off-by: Spike Curtis <spike@coder.com >
* Only log bytes if we're not expecting EOF
Signed-off-by: Spike Curtis <spike@coder.com >
---------
Signed-off-by: Spike Curtis <spike@coder.com >
2023-09-19 17:57:30 +00:00
Jon Ayers
7311ffbd9d
feat: implement agent process management ( #9461 )
...
- An opt-in feature has been added to the agent to allow
deprioritizing non coder-related processes for CPU by setting their
niceness level to 10.
- Opting in to the feature requires setting CODER_PROC_PRIO_MGMT to a non-empty value.
2023-09-14 19:45:05 -05:00
Kyle Carberry
22e781eced
chore: add /v2 to import module path ( #9072 )
...
* chore: add /v2 to import module path
go mod requires semantic versioning with versions greater than 1.x
This was a mechanical update by running:
```
go install github.com/marwan-at-work/mod/cmd/mod@latest
mod upgrade
```
Migrate generated files to import /v2
* Fix gen
2023-08-18 18:55:43 +00:00
Asher
02ee724d9f
fix: do terminal emulation in reconnecting pty tests ( #9114 )
...
It looks like it is possible for screen to use control sequences instead
of literal newlines which fails the tests.
This reuses the existing readUntil function used in other pty tests.
2023-08-16 13:02:03 -08:00
Asher
b993cab49a
fix: use screen for reconnecting terminal sessions on Linux if available ( #8640 )
...
* Add screen backend for reconnecting ptys
The screen portion is a port from wsep. There is an interface that lets
you choose between screen and the previous method. By default it will
choose screen if it is installed but this can be overidden (mostly for
tests).
The tests use a scanner instead of a reader now because the reader will
loop infinitely at the end of a stream.
Replace /bin/bash with bash since bash is not always in /bin.
* Remove connection_id from reconnecting PTY logger
This serves multiple connections so it makes no sense to scope it to a
single connection.
Also lets us use "connection_id" when logging write errors instead of
"other_conn_id".
* Use PATH to test buffered reconnecting pty
2023-08-14 11:19:13 -08:00
Dean Sheather
3c52b01850
chore: add tailscale magicsock debug logging controls ( #8982 )
2023-08-08 17:56:08 +00:00
Dean Sheather
c575292ba6
fix: fix tailnet netcheck issues ( #8802 )
2023-08-02 01:50:43 +10:00
Dean Sheather
2f0a9996e7
chore: add derpserver to wsproxy, add proxies to derpmap ( #7311 )
2023-07-27 02:21:04 +10:00
Colin Adler
c8d65de4b7
test(agent): fix TestAgent_Metadata/Once flake ( #8613 )
2023-07-20 18:49:44 +00:00
Mathias Fredriksson
5fd77ad7cf
test(agent): fix service banner and metadata intervals ( #8516 )
2023-07-14 16:10:26 +03:00
Colin Adler
c47b78c44b
chore: replace wsconncache with a single tailnet ( #8176 )
2023-07-12 17:37:31 -05:00
Mathias Fredriksson
3f058f28e7
test(agent): use afero for motd tests to allow parallel execution ( #8329 )
2023-07-06 10:57:51 +03:00
Asher
6015319e9d
feat: show service banner in SSH/TTY sessions ( #8186 )
...
* Allow workspace agents to get appearance
* Poll for service banner every two minutes
* Show service banner before MOTD if not quiet
2023-06-30 10:41:29 -08:00
Mathias Fredriksson
6d176aee5d
test(agent): fix lifecycle test flakeyness ( #8230 )
2023-06-27 12:44:16 +00:00
Mathias Fredriksson
8dac0356ed
refactor: replace startup script logs EOF with starting/ready time ( #8082 )
...
This commit reverts some of the changes in #8029 and implements an
alternative method of keeping track of when the startup script has ended
and there will be no more logs.
This is achieved by adding new agent fields for tracking when the agent
enters the "starting" and "ready"/"start_error" lifecycle states. The
timestamps simplify logic since we don't need understand if the current
state is before or after the state we're interested in. They can also be
used to show data like how long the startup script took to execute. This
also allowed us to remove the EOF field from the logs as the
implementation was problematic when we returned the EOF log entry in the
response since requesting _after_ that ID would give no logs and the API
would thus lose track of EOF.
2023-06-20 14:41:55 +03:00
Mathias Fredriksson
0c5077464b
fix: avoid missed logs when streaming startup logs ( #8029 )
...
* feat(coderd,agent): send startup log eof at the end
* fix(coderd): fix edge case in startup log pubsub
* fix(coderd): ensure startup logs are closed on lifecycle state change (fallback)
* fix(codersdk): fix startup log channel shared memory bug
* fix(site): remove the EOF log line
2023-06-16 17:14:22 +03:00
Marcin Tojek
14efdadd3c
feat: Collect agent SSH metrics ( #7584 )
2023-05-25 12:52:36 +02:00
Kyle Carberry
70d2203b9e
chore: reduce the log output of skipped tests ( #7520 )
...
With the introduction of the workspace proxy tests there was a lot
of output if a test was eventually skipped.
2023-05-14 19:37:00 -05:00
Spike Curtis
9c030a8888
fix: pty.Start respects context on Windows too ( #7373 )
...
* fix: pty.Start respects context on Windows too
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix windows imports; rename ToExec -> AsExec
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix import in windows test
Signed-off-by: Spike Curtis <spike@coder.com >
---------
Signed-off-by: Spike Curtis <spike@coder.com >
2023-05-03 11:43:05 +04:00
Ammar Bandukwala
465fe8658d
chore: skip timing-sensistive AgentMetadata test in the standard suite ( #7237 )
...
* chore: skip timing-sensistive AgentMetadata test in the standard suite
* Add test-timing target
* fix windows?
* Works on my Windows desktop?
* Use tag system
* fixup! Use tag system
2023-05-02 10:41:41 +00:00
Spike Curtis and Mathias Fredriksson
b6666cf1cf
chore: tailnet debug logging ( #7260 )
...
* Enable discovery (disco) debug
Signed-off-by: Spike Curtis <spike@coder.com >
* Better debug on reconnectingPTY
Signed-off-by: Spike Curtis <spike@coder.com >
* Agent logging in appstest
Signed-off-by: Spike Curtis <spike@coder.com >
* More reconnectingPTY logging
Signed-off-by: Spike Curtis <spike@coder.com >
* Add logging to coordinator
Signed-off-by: Spike Curtis <spike@coder.com >
* Update agent/agent.go
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
* Update agent/agent.go
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
* Update agent/agent.go
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
* Update agent/agent.go
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
* Clarify logs; remove unrelated changes
Signed-off-by: Spike Curtis <spike@coder.com >
---------
Signed-off-by: Spike Curtis <spike@coder.com >
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
2023-04-27 13:59:01 +04:00
Spike Curtis
daee91c6dc
refactor: PTY & SSH ( #7100 )
...
* Add ssh tests for longoutput, orphan
Signed-off-by: Spike Curtis <spike@coder.com >
* PTY/SSH tests & improvements
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix some tests
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix linting
Signed-off-by: Spike Curtis <spike@coder.com >
* fmt
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix windows test
Signed-off-by: Spike Curtis <spike@coder.com >
* Windows copy test
Signed-off-by: Spike Curtis <spike@coder.com >
* WIP Windows pty handling
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix truncation tests
Signed-off-by: Spike Curtis <spike@coder.com >
* Appease linter/fmt
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix typo
Signed-off-by: Spike Curtis <spike@coder.com >
* Rework truncation test to not assume OS buffers
Signed-off-by: Spike Curtis <spike@coder.com >
* Disable orphan test on Windows --- uses sh
Signed-off-by: Spike Curtis <spike@coder.com >
* agent_test running SSH in pty use ptytest.Start
Signed-off-by: Spike Curtis <spike@coder.com >
* More detail about closing pseudoconsole on windows
Signed-off-by: Spike Curtis <spike@coder.com >
* Code review fixes
Signed-off-by: Spike Curtis <spike@coder.com >
* Rearrange ptytest method order
Signed-off-by: Spike Curtis <spike@coder.com >
* Protect pty.Resize on windows from races
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix windows bugs
Signed-off-by: Spike Curtis <spike@coder.com >
* PTY doesn't extend PTYCmd
Signed-off-by: Spike Curtis <spike@coder.com >
* Fix windows types
Signed-off-by: Spike Curtis <spike@coder.com >
---------
Signed-off-by: Spike Curtis <spike@coder.com >
2023-04-24 14:53:57 +04:00
Mathias Fredriksson
712098fa2b
test(agent): Increase the time to wait for agent reachable ( #7245 )
2023-04-21 19:40:17 +00:00
Mathias Fredriksson
300ae4a6bf
test(agent): Fix TestAgent_UnixRemoteForwarding timeout ( #7235 )
2023-04-21 01:35:51 +03:00
Muhammad Atif Ali and Mathias Fredriksson
bb43713d38
fix: VSCode desktop connection ( #7120 )
...
Co-authored-by: Mathias Fredriksson <mafredri@gmail.com >
2023-04-14 17:32:18 +03:00
Mathias Fredriksson
0224426e5b
refactor(agent): Move SSH server into agentssh package ( #7004 )
...
Refs: #6177
2023-04-06 19:39:22 +03:00
Mathias Fredriksson
121c2bcde8
test(agent): Fix tests without cmd.Wait() ( #7029 )
2023-04-06 16:45:53 +03:00
Ammar Bandukwala
ca4fa81570
feat: add agent metadata ( #6614 )
2023-03-31 15:26:19 -05:00
Kyle Carberry
04e404e448
chore: dial the remote socket continually until connect ( #6891 )
...
It's possible that the command starts but the socket isn't ready
even when the file exists.
2023-03-30 15:36:23 +00:00
Mathias Fredriksson
90d18dd2e5
fix(agent): Close stdin and stdout separately to fix pty output loss ( #6862 )
...
Fixes #6656
Closes #6840
2023-03-29 21:58:38 +03:00
Mathias Fredriksson
891bbda995
fix(agent): More protection for lost output of SSH PTY commands ( #6833 )
...
Fixes #6656 (part 2)
2023-03-28 09:11:15 +00:00
Mathias Fredriksson
76bdde7f1b
fix(agent): Prevent SSH TTYs from losing command output on exit ( #6777 )
2023-03-24 18:23:41 +00:00
Kyle Carberry and Asher
cb7375450b
feat: add startup script logs to the ui ( #6558 )
...
* Add startup script logs to the database
* Add coderd endpoints for startup script logs
* Push startup script logs from agent
* Pull startup script logs on frontend
* Rename queries
* Add constraint
* Start creating log sending loop
* Add log sending to the agent
* Add tests for streaming logs
* Shorten notify channel name
* Add FE
* Improve bulk log performance
* Finish UI display
* Fix startup log visibility
* Add warning for overflow
* Fix agent queue logs overflow
* Display staartup logs in a virtual DOM for performance
* Fix agent queue with loads of logs
* Fix authorize test
* Remove faulty test
* Fix startup and shutdown reporting error
* Fix gen
* Fix comments
* Periodically purge old database entries
* Add test fixture for migration
* Add Storybook
* Check if there are logs when displaying features
* Fix startup component overflow gap
* Fix startup log wrapping
---------
Co-authored-by: Asher <ash@coder.com >
2023-03-23 14:09:13 -05:00
Kyle Carberry
5304b4e483
feat: add connection statistics for workspace agents ( #6469 )
...
* fix: don't make session counts cumulative
This made for some weird tracking... we want the point-in-time
number of counts!
* Add databasefake query for getting agent stats
* Add deployment stats endpoint
* The query... works?!?
* Fix aggregation query
* Select from multiple tables instead
* Fix continuous stats
* Increase period of stat refreshes
* Add workspace counts to deployment stats
* fmt
* Add a slight bit of responsiveness
* Fix template version editor overflow
* Add refresh button
* Fix font family on button
* Fix latest stat being reported
* Revert agent conn stats
* Fix linting error
* Fix tests
* Fix gen
* Fix migrations
* Block on sending stat updates
* Add test fixtures
* Fix response structure
* make gen
2023-03-08 21:05:45 -06:00
Mathias Fredriksson and Marcin Tojek
22e3ff96be
feat(agent): Add shutdown lifecycle states and shutdown_script support ( #6139 )
...
* feat(api): Add agent shutdown lifecycle states
* feat(agent): Add shutdown_script support
* feat(agent): Add shutdown_script timeout
* feat(site): Support new agent lifecycle states
---
Co-authored-by: Marcin Tojek <marcin@coder.com >
2023-03-06 21:34:00 +02:00
Kyle Carberry
2ff1c6d613
feat: add agent stats for different connection types ( #6412 )
...
This allows us to track when our extensions are used, when the
web terminal is used, and average connection latency to the agent.
2023-03-02 08:06:00 -06:00
Kyle Carberry
05e449943d
chore: convert agent stats to use a table ( #6374 )
...
* chore: convert workspace agent stats from json to table
* chore: convert agent stats to use a table
Backwards compatibility becomes hard when all agent stats are in a JSON blob.
We also want to query this table for new agents that are failing health checks
so we can display it in the UI.
* Fix migration using default values
2023-02-28 13:33:33 -06:00
Mathias Fredriksson
677721e4a1
fix(tailnet): Skip nodes without DERP, avoid use of RemoveAllPeers ( #6320 )
...
* fix(tailnet): Skip nodes without DERP, avoid use of RemoveAllPeers
2023-02-24 18:16:29 +02:00
Colin Adler
4432cd08d6
chore: update tailscale ( #6091 )
2023-02-09 21:43:18 -06:00
Kyle Carberry
691495d761
feat: add expanded_directory to the agent for extension support ( #6087 )
...
This will enable opening the default `dir` of an agent in
the VS Code extension!
2023-02-07 21:35:09 +00:00