Skip to content

Commit

Permalink
update user_config_watcher
Browse files Browse the repository at this point in the history
Signed-off-by: pozsgaic <pozsgai@progress.com>
  • Loading branch information
pozsgaic committed Mar 11, 2022
1 parent c701efc commit 1802518
Showing 1 changed file with 97 additions and 11 deletions.
108 changes: 97 additions & 11 deletions components/sup/src/manager/user_config_watcher.rs
Expand Up @@ -258,9 +258,8 @@ impl Worker {
#[cfg(test)]
mod tests {
use super::*;

use std::{env,
fs::{remove_file,
use habitat_core::locked_env_var;
use std::{fs::{remove_file,
File},
io::Write,
str::FromStr,
Expand All @@ -272,27 +271,59 @@ mod tests {

use tempfile::TempDir;

locked_env_var!(HAB_STUDIO_HOST_ARCH, lock_env_var);

#[test]
fn test_events_with_poll_watcher() {
env::set_var("HAB_STUDIO_HOST_ARCH", "aarch64-darwin");
no_events_at_first();
events_present_after_adding_config();
events_present_after_changing_config();
events_present_after_removing_config();
env::remove_var("HAB_STUDIO_HOST_ARCH");
fn no_events_at_first() {
let lock = lock_env_var();
lock.set("");

let service = TestService::default();
let mut ucm = UserConfigWatcher::new();
ucm.add(&service).expect("adding service");

lock.unset();

assert!(!ucm.have_events_for(&service));
}

#[test]
fn no_events_at_first() {
fn no_events_at_first_poll_watcher() {
let lock = lock_env_var();
lock.set("aarch64-darwin");

let service = TestService::default();
let mut ucm = UserConfigWatcher::new();
ucm.add(&service).expect("adding service");

lock.unset();

assert!(!ucm.have_events_for(&service));
}

#[test]
fn events_present_after_adding_config() {
let lock = lock_env_var();
lock.set("");

let service = TestService::default();
let mut ucm = UserConfigWatcher::new();
ucm.add(&service).expect("adding service");
assert!(wait_for_watcher(&ucm, &service));

File::create(service.user_config_path().get_path().join(USER_CONFIG_FILE))
.expect("creating file");

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

#[test]
fn events_present_after_adding_config_poll_watcher() {
let lock = lock_env_var();
lock.set("aarch64-darwin");

let service = TestService::default();
let mut ucm = UserConfigWatcher::new();
ucm.add(&service).expect("adding service");
Expand All @@ -301,11 +332,36 @@ mod tests {
File::create(service.user_config_path().get_path().join(USER_CONFIG_FILE))
.expect("creating file");

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

#[test]
fn events_present_after_changing_config() {
let lock = lock_env_var();
lock.set("");

let service = TestService::default();
let file_path = service.user_config_path().get_path().join(USER_CONFIG_FILE);
let mut ucm = UserConfigWatcher::new();

ucm.add(&service).expect("adding service");
assert!(wait_for_watcher(&ucm, &service));
let mut file = File::create(&file_path).expect("creating file");

file.write_all(b"42").expect(USER_CONFIG_FILE);

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

#[test]
fn events_present_after_changing_config_poll_watcher() {
let lock = lock_env_var();
lock.set("aarch64-darwin");

let service = TestService::default();
let file_path = service.user_config_path().get_path().join(USER_CONFIG_FILE);
let mut ucm = UserConfigWatcher::new();
Expand All @@ -316,11 +372,39 @@ mod tests {

file.write_all(b"42").expect(USER_CONFIG_FILE);

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

#[test]
fn events_present_after_removing_config() {
let lock = lock_env_var();
lock.set("");

let service = TestService::default();
let file_path = service.user_config_path().get_path().join(USER_CONFIG_FILE);
let mut ucm = UserConfigWatcher::new();

ucm.add(&service).expect("adding service");
assert!(wait_for_watcher(&ucm, &service));
File::create(&file_path).expect("creating file");

// Allow the watcher to notice that a file was created.
wait_for_events(&ucm, &service);

remove_file(&file_path).expect("removing file");

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

#[test]
fn events_present_after_removing_config_poll_watcher() {
let lock = lock_env_var();
lock.set("aarch64-darwin");

let service = TestService::default();
let file_path = service.user_config_path().get_path().join(USER_CONFIG_FILE);
let mut ucm = UserConfigWatcher::new();
Expand All @@ -334,6 +418,8 @@ mod tests {

remove_file(&file_path).expect("removing file");

lock.unset();

assert!(wait_for_events(&ucm, &service));
}

Expand Down

0 comments on commit 1802518

Please sign in to comment.