Skip to content

Commit

Permalink
Ass test about X-Debug-ID header to upload mod
Browse files Browse the repository at this point in the history
  • Loading branch information
brizental committed Jun 24, 2020
1 parent 4ecc939 commit fa9302c
Showing 1 changed file with 42 additions and 64 deletions.
106 changes: 42 additions & 64 deletions glean-core/src/upload/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,7 @@ mod test {

// Enqueue a ping multiple times
for _ in 0..max_pings_per_interval {
upload_manager.enqueue_ping(DOCUMENT_ID, PATH, json!({}));
upload_manager.enqueue_ping(DOCUMENT_ID, PATH, json!({}), None);
}

// Verify a request is returned for each submitted ping
Expand All @@ -580,7 +580,7 @@ mod test {

// Enqueue just one more ping.
// We should still be within the default rate limit time.
upload_manager.enqueue_ping(DOCUMENT_ID, PATH, json!({}));
upload_manager.enqueue_ping(DOCUMENT_ID, PATH, json!({}), None);

// Verify that we are indeed told to wait because we are at capacity
assert_eq!(PingUploadTask::Wait, upload_manager.get_upload_task(false));
Expand Down Expand Up @@ -651,7 +651,7 @@ mod test {

#[test]
fn test_fills_up_queue_successfully_from_disk() {
let (mut glean, dir) = new_glean(None);
let (mut glean, _) = new_glean(None);

// Register a ping for testing
let ping_type = PingType::new("test", true, /* send_if_empty */ true, vec![]);
Expand All @@ -663,14 +663,11 @@ mod test {
glean.submit_ping(&ping_type, None).unwrap();
}

// Create a new upload_manager
let upload_manager = PingUploadManager::new(dir.path(), false);

// Wait for processing of pending pings directory to finish.
let mut upload_task = upload_manager.get_upload_task(false);
let mut upload_task = glean.get_upload_task(false);
while upload_task == PingUploadTask::Wait {
thread::sleep(Duration::from_millis(10));
upload_task = upload_manager.get_upload_task(false);
upload_task = glean.get_upload_task(false);
}

// Verify the requests were properly enqueued
Expand All @@ -680,11 +677,11 @@ mod test {
_ => panic!("Expected upload manager to return the next request!"),
}

upload_task = upload_manager.get_upload_task(false);
upload_task = glean.get_upload_task(false);
}

// Verify that after all requests are returned, none are left
assert_eq!(upload_manager.get_upload_task(false), PingUploadTask::Done);
assert_eq!(glean.get_upload_task(false), PingUploadTask::Done);
}

#[test]
Expand All @@ -698,33 +695,23 @@ mod test {
// Submit a ping
glean.submit_ping(&ping_type, None).unwrap();

// Create a new upload_manager
let upload_manager = PingUploadManager::new(&dir.path(), false);

// Wait for processing of pending pings directory to finish.
let mut upload_task = upload_manager.get_upload_task(false);
while upload_task == PingUploadTask::Wait {
thread::sleep(Duration::from_millis(10));
upload_task = upload_manager.get_upload_task(false);
}

// Get the pending ping directory path
let pending_pings_dir = dir.path().join(PENDING_PINGS_DIRECTORY);

// Get the submitted PingRequest
match upload_task {
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
// Simulate the processing of a sucessfull request
let document_id = request.document_id;
upload_manager.process_ping_upload_response(&document_id, HttpStatus(200));
glean.process_ping_upload_response(&document_id, HttpStatus(200));
// Verify file was deleted
assert!(!pending_pings_dir.join(document_id).exists());
}
_ => panic!("Expected upload manager to return the next request!"),
}

// Verify that after request is returned, none are left
assert_eq!(upload_manager.get_upload_task(false), PingUploadTask::Done);
assert_eq!(glean.get_upload_task(false), PingUploadTask::Done);
}

#[test]
Expand All @@ -738,38 +725,28 @@ mod test {
// Submit a ping
glean.submit_ping(&ping_type, None).unwrap();

// Create a new upload_manager
let upload_manager = PingUploadManager::new(&dir.path(), false);

// Wait for processing of pending pings directory to finish.
let mut upload_task = upload_manager.get_upload_task(false);
while upload_task == PingUploadTask::Wait {
thread::sleep(Duration::from_millis(10));
upload_task = upload_manager.get_upload_task(false);
}

// Get the pending ping directory path
let pending_pings_dir = dir.path().join(PENDING_PINGS_DIRECTORY);

// Get the submitted PingRequest
match upload_task {
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
// Simulate the processing of a client error
let document_id = request.document_id;
upload_manager.process_ping_upload_response(&document_id, HttpStatus(404));
glean.process_ping_upload_response(&document_id, HttpStatus(404));
// Verify file was deleted
assert!(!pending_pings_dir.join(document_id).exists());
}
_ => panic!("Expected upload manager to return the next request!"),
}

// Verify that after request is returned, none are left
assert_eq!(upload_manager.get_upload_task(false), PingUploadTask::Done);
assert_eq!(glean.get_upload_task(false), PingUploadTask::Done);
}

#[test]
fn test_processes_correctly_server_error_upload_response() {
let (mut glean, dir) = new_glean(None);
let (mut glean, _) = new_glean(None);

// Register a ping for testing
let ping_type = PingType::new("test", true, /* send_if_empty */ true, vec![]);
Expand All @@ -778,24 +755,14 @@ mod test {
// Submit a ping
glean.submit_ping(&ping_type, None).unwrap();

// Create a new upload_manager
let upload_manager = PingUploadManager::new(dir.path(), false);

// Wait for processing of pending pings directory to finish.
let mut upload_task = upload_manager.get_upload_task(false);
while upload_task == PingUploadTask::Wait {
thread::sleep(Duration::from_millis(10));
upload_task = upload_manager.get_upload_task(false);
}

// Get the submitted PingRequest
match upload_task {
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
// Simulate the processing of a client error
let document_id = request.document_id;
upload_manager.process_ping_upload_response(&document_id, HttpStatus(500));
glean.process_ping_upload_response(&document_id, HttpStatus(500));
// Verify this ping was indeed re-enqueued
match upload_manager.get_upload_task(false) {
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
assert_eq!(document_id, request.document_id);
}
Expand All @@ -806,7 +773,7 @@ mod test {
}

// Verify that after request is returned, none are left
assert_eq!(upload_manager.get_upload_task(false), PingUploadTask::Done);
assert_eq!(glean.get_upload_task(false), PingUploadTask::Done);
}

#[test]
Expand All @@ -820,33 +787,23 @@ mod test {
// Submit a ping
glean.submit_ping(&ping_type, None).unwrap();

// Create a new upload_manager
let upload_manager = PingUploadManager::new(&dir.path(), false);

// Wait for processing of pending pings directory to finish.
let mut upload_task = upload_manager.get_upload_task(false);
while upload_task == PingUploadTask::Wait {
thread::sleep(Duration::from_millis(10));
upload_task = upload_manager.get_upload_task(false);
}

// Get the pending ping directory path
let pending_pings_dir = dir.path().join(PENDING_PINGS_DIRECTORY);

// Get the submitted PingRequest
match upload_task {
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
// Simulate the processing of a client error
let document_id = request.document_id;
upload_manager.process_ping_upload_response(&document_id, UnrecoverableFailure);
glean.process_ping_upload_response(&document_id, UnrecoverableFailure);
// Verify file was deleted
assert!(!pending_pings_dir.join(document_id).exists());
}
_ => panic!("Expected upload manager to return the next request!"),
}

// Verify that after request is returned, none are left
assert_eq!(upload_manager.get_upload_task(false), PingUploadTask::Done);
assert_eq!(glean.get_upload_task(false), PingUploadTask::Done);
}

#[test]
Expand Down Expand Up @@ -909,4 +866,25 @@ mod test {
// we expect the upload task to always be `Done`.
assert_eq!(PingUploadTask::Done, upload_manager.get_upload_task(false))
}

#[test]
fn test_adds_debug_view_header_to_requests_when_tag_is_set() {
let (mut glean, _) = new_glean(None);
glean.set_debug_view_tag("valid-tag");

// Register a ping for testing
let ping_type = PingType::new("test", true, /* send_if_empty */ true, vec![]);
glean.register_ping_type(&ping_type);

// Submit a ping
glean.submit_ping(&ping_type, None).unwrap();

// Get the submitted PingRequest
match glean.get_upload_task(false) {
PingUploadTask::Upload(request) => {
assert_eq!(request.headers.get("X-Debug-ID").unwrap(), "valid-tag")
}
_ => panic!("Expected upload manager to return the next request!"),
}
}
}

0 comments on commit fa9302c

Please sign in to comment.