summaryrefslogtreecommitdiffstats
path: root/src/tests/e2e/remote_runner.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/e2e/remote_runner.rs')
-rw-r--r--src/tests/e2e/remote_runner.rs59
1 files changed, 54 insertions, 5 deletions
diff --git a/src/tests/e2e/remote_runner.rs b/src/tests/e2e/remote_runner.rs
index 205710f1d..feaeecdac 100644
--- a/src/tests/e2e/remote_runner.rs
+++ b/src/tests/e2e/remote_runner.rs
@@ -67,13 +67,27 @@ fn start_zellij(channel: &mut ssh2::Channel) {
channel.flush().unwrap();
}
-fn start_zellij_in_session(channel: &mut ssh2::Channel, session_name: &str) {
+fn start_zellij_mirrored_session(channel: &mut ssh2::Channel) {
stop_zellij(channel);
channel
.write_all(
format!(
- "{} --session {}\n",
- ZELLIJ_EXECUTABLE_LOCATION, session_name
+ "{} --session {} options --mirror-session true\n",
+ ZELLIJ_EXECUTABLE_LOCATION, SESSION_NAME
+ )
+ .as_bytes(),
+ )
+ .unwrap();
+ channel.flush().unwrap();
+}
+
+fn start_zellij_in_session(channel: &mut ssh2::Channel, session_name: &str, mirrored: bool) {
+ stop_zellij(channel);
+ channel
+ .write_all(
+ format!(
+ "{} --session {} options --mirror-session {}\n",
+ ZELLIJ_EXECUTABLE_LOCATION, session_name, mirrored
)
.as_bytes(),
)
@@ -333,13 +347,48 @@ impl RemoteRunner {
reader_thread,
}
}
+ pub fn new_mirrored_session(win_size: Size) -> Self {
+ let sess = ssh_connect();
+ let mut channel = sess.channel_session().unwrap();
+ let mut rows = Dimension::fixed(win_size.rows);
+ let mut cols = Dimension::fixed(win_size.cols);
+ rows.set_inner(win_size.rows);
+ cols.set_inner(win_size.cols);
+ let pane_geom = PaneGeom {
+ x: 0,
+ y: 0,
+ rows,
+ cols,
+ };
+ setup_remote_environment(&mut channel, win_size);
+ start_zellij_mirrored_session(&mut channel);
+ let channel = Arc::new(Mutex::new(channel));
+ let last_snapshot = Arc::new(Mutex::new(String::new()));
+ let cursor_coordinates = Arc::new(Mutex::new((0, 0)));
+ sess.set_blocking(false);
+ let reader_thread =
+ read_from_channel(&channel, &last_snapshot, &cursor_coordinates, &pane_geom);
+ RemoteRunner {
+ steps: vec![],
+ channel,
+ currently_running_step: None,
+ current_step_index: 0,
+ retries_left: RETRIES,
+ retry_pause_ms: 100,
+ test_timed_out: false,
+ panic_on_no_retries_left: true,
+ last_snapshot,
+ cursor_coordinates,
+ reader_thread,
+ }
+ }
pub fn kill_running_sessions(win_size: Size) {
let sess = ssh_connect();
let mut channel = sess.channel_session().unwrap();
setup_remote_environment(&mut channel, win_size);
start_zellij(&mut channel);
}
- pub fn new_with_session_name(win_size: Size, session_name: &str) -> Self {
+ pub fn new_with_session_name(win_size: Size, session_name: &str, mirrored: bool) -> Self {
// notice that this method does not have a timeout, so use with caution!
let sess = ssh_connect_without_timeout();
let mut channel = sess.channel_session().unwrap();
@@ -354,7 +403,7 @@ impl RemoteRunner {
cols,
};
setup_remote_environment(&mut channel, win_size);
- start_zellij_in_session(&mut channel, session_name);
+ start_zellij_in_session(&mut channel, session_name, mirrored);
let channel = Arc::new(Mutex::new(channel));
let last_snapshot = Arc::new(Mutex::new(String::new()));
let cursor_coordinates = Arc::new(Mutex::new((0, 0)));