upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests/git_remote_helper.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-08-01 10:17:01 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-08-01 10:19:36 +0100
commit24125936adb6c152cdb16d55f2639dd374dfee1d (patch)
tree3e3c2005b05c24dc31291cdad874a1cf1af1436d /tests/git_remote_helper.rs
parent1f38d2a97e4c8b1d814c414343d1e118ce119f70 (diff)
feat(remote): `push` to all `clone` servers
initially we push to the first server, if successful update the state event, then siliently push to the others and silently fail
Diffstat (limited to 'tests/git_remote_helper.rs')
-rw-r--r--tests/git_remote_helper.rs137
1 files changed, 118 insertions, 19 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs
index 20ecad7..69f290a 100644
--- a/tests/git_remote_helper.rs
+++ b/tests/git_remote_helper.rs
@@ -63,7 +63,9 @@ async fn generate_repo_with_state_event() -> Result<(nostr::Event, GitTestRepo)>
63 let events = vec![ 63 let events = vec![
64 generate_test_key_1_metadata_event("fred"), 64 generate_test_key_1_metadata_event("fred"),
65 generate_test_key_1_relay_list_event(), 65 generate_test_key_1_relay_list_event(),
66 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 66 generate_repo_ref_event_with_git_server(vec![
67 source_git_repo.dir.to_str().unwrap().to_string(),
68 ]),
67 ]; 69 ];
68 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 70 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
69 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 71 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -136,7 +138,9 @@ mod initially_runs_fetch {
136 let events = vec![ 138 let events = vec![
137 generate_test_key_1_metadata_event("fred"), 139 generate_test_key_1_metadata_event("fred"),
138 generate_test_key_1_relay_list_event(), 140 generate_test_key_1_relay_list_event(),
139 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 141 generate_repo_ref_event_with_git_server(vec![
142 source_git_repo.dir.to_str().unwrap().to_string(),
143 ]),
140 ]; 144 ];
141 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 145 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
142 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 146 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -203,7 +207,9 @@ mod list {
203 let events = vec![ 207 let events = vec![
204 generate_test_key_1_metadata_event("fred"), 208 generate_test_key_1_metadata_event("fred"),
205 generate_test_key_1_relay_list_event(), 209 generate_test_key_1_relay_list_event(),
206 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 210 generate_repo_ref_event_with_git_server(vec![
211 source_git_repo.dir.to_str().unwrap().to_string(),
212 ]),
207 ]; 213 ];
208 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 214 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
209 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 215 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -276,7 +282,9 @@ mod list {
276 let events = vec![ 282 let events = vec![
277 generate_test_key_1_metadata_event("fred"), 283 generate_test_key_1_metadata_event("fred"),
278 generate_test_key_1_relay_list_event(), 284 generate_test_key_1_relay_list_event(),
279 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 285 generate_repo_ref_event_with_git_server(vec![
286 source_git_repo.dir.to_str().unwrap().to_string(),
287 ]),
280 state_event, 288 state_event,
281 ]; 289 ];
282 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 290 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
@@ -357,7 +365,9 @@ mod list {
357 let events = vec![ 365 let events = vec![
358 generate_test_key_1_metadata_event("fred"), 366 generate_test_key_1_metadata_event("fred"),
359 generate_test_key_1_relay_list_event(), 367 generate_test_key_1_relay_list_event(),
360 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 368 generate_repo_ref_event_with_git_server(vec![
369 source_git_repo.dir.to_str().unwrap().to_string(),
370 ]),
361 state_event, 371 state_event,
362 ]; 372 ];
363 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 373 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
@@ -433,7 +443,9 @@ mod fetch {
433 let events = vec![ 443 let events = vec![
434 generate_test_key_1_metadata_event("fred"), 444 generate_test_key_1_metadata_event("fred"),
435 generate_test_key_1_relay_list_event(), 445 generate_test_key_1_relay_list_event(),
436 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 446 generate_repo_ref_event_with_git_server(vec![
447 source_git_repo.dir.to_str().unwrap().to_string(),
448 ]),
437 ]; 449 ];
438 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 450 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
439 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 451 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -513,7 +525,9 @@ mod push {
513 let events = vec![ 525 let events = vec![
514 generate_test_key_1_metadata_event("fred"), 526 generate_test_key_1_metadata_event("fred"),
515 generate_test_key_1_relay_list_event(), 527 generate_test_key_1_relay_list_event(),
516 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 528 generate_repo_ref_event_with_git_server(vec![
529 source_git_repo.dir.to_str().unwrap().to_string(),
530 ]),
517 ]; 531 ];
518 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 532 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
519 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 533 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -595,7 +609,9 @@ mod push {
595 let events = vec![ 609 let events = vec![
596 generate_test_key_1_metadata_event("fred"), 610 generate_test_key_1_metadata_event("fred"),
597 generate_test_key_1_relay_list_event(), 611 generate_test_key_1_relay_list_event(),
598 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 612 generate_repo_ref_event_with_git_server(vec![
613 source_git_repo.dir.to_str().unwrap().to_string(),
614 ]),
599 ]; 615 ];
600 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 616 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
601 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 617 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -688,9 +704,9 @@ mod push {
688 let events = vec![ 704 let events = vec![
689 generate_test_key_1_metadata_event("fred"), 705 generate_test_key_1_metadata_event("fred"),
690 generate_test_key_1_relay_list_event(), 706 generate_test_key_1_relay_list_event(),
691 generate_repo_ref_event_with_git_server( 707 generate_repo_ref_event_with_git_server(vec![
692 source_git_repo.dir.to_str().unwrap(), 708 source_git_repo.dir.to_str().unwrap().to_string(),
693 ), 709 ]),
694 ]; 710 ];
695 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 711 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
696 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 712 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -788,9 +804,9 @@ mod push {
788 let events = vec![ 804 let events = vec![
789 generate_test_key_1_metadata_event("fred"), 805 generate_test_key_1_metadata_event("fred"),
790 generate_test_key_1_relay_list_event(), 806 generate_test_key_1_relay_list_event(),
791 generate_repo_ref_event_with_git_server( 807 generate_repo_ref_event_with_git_server(vec![
792 source_git_repo.dir.to_str().unwrap(), 808 source_git_repo.dir.to_str().unwrap().to_string(),
793 ), 809 ]),
794 state_event.clone(), 810 state_event.clone(),
795 ]; 811 ];
796 812
@@ -918,7 +934,9 @@ mod push {
918 let events = vec![ 934 let events = vec![
919 generate_test_key_1_metadata_event("fred"), 935 generate_test_key_1_metadata_event("fred"),
920 generate_test_key_1_relay_list_event(), 936 generate_test_key_1_relay_list_event(),
921 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 937 generate_repo_ref_event_with_git_server(vec![
938 source_git_repo.dir.to_str().unwrap().to_string(),
939 ]),
922 ]; 940 ];
923 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 941 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
924 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 942 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -1003,7 +1021,9 @@ mod push {
1003 let events = vec![ 1021 let events = vec![
1004 generate_test_key_1_metadata_event("fred"), 1022 generate_test_key_1_metadata_event("fred"),
1005 generate_test_key_1_relay_list_event(), 1023 generate_test_key_1_relay_list_event(),
1006 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), 1024 generate_repo_ref_event_with_git_server(vec![
1025 source_git_repo.dir.to_str().unwrap().to_string(),
1026 ]),
1007 ]; 1027 ];
1008 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) 1028 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
1009 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( 1029 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
@@ -1083,9 +1103,9 @@ mod push {
1083 let events = vec![ 1103 let events = vec![
1084 generate_test_key_1_metadata_event("fred"), 1104 generate_test_key_1_metadata_event("fred"),
1085 generate_test_key_1_relay_list_event(), 1105 generate_test_key_1_relay_list_event(),
1086 generate_repo_ref_event_with_git_server( 1106 generate_repo_ref_event_with_git_server(vec![
1087 source_git_repo.dir.to_str().unwrap(), 1107 source_git_repo.dir.to_str().unwrap().to_string(),
1088 ), 1108 ]),
1089 state_event.clone(), 1109 state_event.clone(),
1090 ]; 1110 ];
1091 1111
@@ -1155,4 +1175,83 @@ mod push {
1155 } 1175 }
1156 } 1176 }
1157 } 1177 }
1178
1179 mod pushes_to_all_git_servers_listed {
1180 use super::*;
1181 async fn async_run_test() -> Result<()> {
1182 let (state_event, source_git_repo) = generate_repo_with_state_event().await?;
1183 let second_source_git_repo = GitTestRepo::duplicate(&source_git_repo)?;
1184
1185 // uppdate announcement with extra git server
1186
1187 let git_repo = prep_git_repo()?;
1188
1189 std::fs::write(git_repo.dir.join("new.md"), "some content")?;
1190 let main_commit_id = git_repo.stage_and_commit("new.md")?;
1191
1192 let events = vec![
1193 generate_test_key_1_metadata_event("fred"),
1194 generate_test_key_1_relay_list_event(),
1195 generate_repo_ref_event_with_git_server(vec![
1196 source_git_repo.dir.to_str().unwrap().to_string(),
1197 second_source_git_repo.dir.to_str().unwrap().to_string(),
1198 ]),
1199 state_event.clone(),
1200 ];
1201
1202 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
1203 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
1204 Relay::new(8051, None, None),
1205 Relay::new(8052, None, None),
1206 Relay::new(8053, None, None),
1207 Relay::new(8055, None, None),
1208 Relay::new(8056, None, None),
1209 Relay::new(8057, None, None),
1210 );
1211 r51.events = events.clone();
1212 r55.events = events;
1213
1214 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
1215 let mut p = cli_tester_after_fetch(&git_repo)?;
1216 p.send_line("push refs/heads/main:refs/heads/main")?;
1217 p.send_line("")?;
1218 p.expect("ok refs/heads/main\r\n")?;
1219 p.expect("\r\n")?;
1220 p.exit()?;
1221 for p in [51, 52, 53, 55, 56, 57] {
1222 relay::shutdown_relay(8000 + p)?;
1223 }
1224 Ok(())
1225 });
1226 // launch relays
1227 let _ = join!(
1228 r51.listen_until_close(),
1229 r52.listen_until_close(),
1230 r53.listen_until_close(),
1231 r55.listen_until_close(),
1232 r56.listen_until_close(),
1233 r57.listen_until_close(),
1234 );
1235
1236 cli_tester_handle.join().unwrap()?;
1237
1238 // git_server updated
1239 assert_eq!(
1240 source_git_repo.get_tip_of_local_branch("main")?,
1241 main_commit_id
1242 );
1243 assert_eq!(
1244 second_source_git_repo.get_tip_of_local_branch("main")?,
1245 main_commit_id
1246 );
1247
1248 Ok(())
1249 }
1250
1251 #[tokio::test]
1252 #[serial]
1253 async fn second_git_server_uptodate() -> Result<()> {
1254 async_run_test().await
1255 }
1256 }
1158} 1257}