chiark / gitweb /
tests: Break out synch
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Feb 2021 00:46:18 +0000 (00:46 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Feb 2021 00:46:18 +0000 (00:46 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest.rs
wdriver.rs

index 4d2f4257e01d1a48400f4ff4ace6ee2d03a67c7f..8e906a8e9b882fdc7ad4756123e32752270206af 100644 (file)
@@ -786,6 +786,30 @@ impl DirSubst {
   }
 }
 
+// -------------------- utilities --------------------
+
+#[throws(AE)]
+pub fn mgmt_game_synch(chan: &mut MgmtChannel, game: InstanceName)
+                       -> Generation {
+  let cmd = MgmtCommand::AlterGame {
+    how: MgmtGameUpdateMode::Online,
+    insns: vec![ MgmtGameInstruction::Synch ],
+    game
+  };
+  let gen = if_chain!{
+    let resp = chan.cmd(&cmd)?;
+    if let MgmtResponse::AlterGame {
+      error: None,
+      ref responses
+    } = resp;
+    if let [MgmtGameResponse::Synch(gen)] = responses[..];
+    then { gen }
+    else { throw!(anyhow!("unexpected resp to synch {:?}", resp)) }
+  };
+  trace!("gen={} ...", gen);
+  gen
+}
+
 // ==================== core entrypoint, for wdriver too ====================
 
 #[throws(AE)]
index 0f5a42243f9763b295b16b7e526d5a134fa9b575..e171780bcf23bbb26cd073e74e802806a065623d 100644 (file)
@@ -462,22 +462,8 @@ impl<'g> WindowGuard<'g> {
 
   #[throws(AE)]
   fn synch_raw(&mut self) {
-    let cmd = MgmtCommand::AlterGame {
-      game: self.w.instance.clone(),
-      how: MgmtGameUpdateMode::Online,
-      insns: vec![ MgmtGameInstruction::Synch ],
-    };
-    let gen = if_chain!{
-      let resp = self.su.mgmt_conn.cmd(&cmd)?;
-      if let MgmtResponse::AlterGame {
-        error: None,
-        ref responses
-      } = resp;
-      if let [MgmtGameResponse::Synch(gen)] = responses[..];
-      then { gen }
-      else { throw!(anyhow!("unexpected resp to synch {:?}", resp)) }
-    };
-    trace!("{:?} gen={} ...", self, gen);
+    let gen = mgmt_game_synch(&mut self.su.mgmt_conn,
+                              self.w.instance.clone())?;
     (|| {
       loop {
         let tgen = self.su.driver.execute_async_script(