@@ -22,7 +22,7 @@ use crate::common::default_agent_options::{create_default_options, create_option
2222use crate :: common:: helpers:: try_until;
2323use crate :: common:: helpers:: {
2424 create_collection_and_wait_for_kv, delete_collection_and_wait_for_kv, generate_bytes_value,
25- generate_key, is_memdx_error,
25+ generate_key, generate_string_key , is_memdx_error,
2626} ;
2727use crate :: common:: test_config:: { run_test, setup_test} ;
2828use couchbase_core:: agent:: Agent ;
@@ -778,3 +778,46 @@ fn test_changed_collection_id() {
778778 assert ! ( upsert_result. mutation_token. is_some( ) ) ;
779779 } ) ;
780780}
781+
782+ #[ test]
783+ fn test_unknown_scope ( ) {
784+ setup_test ( async |config| {
785+ let agent_opts = create_default_options ( config. clone ( ) ) . await ;
786+ let scope_name = generate_string_key ( ) ;
787+ let collection_name = generate_string_key ( ) ;
788+
789+ let mut agent = Agent :: new ( agent_opts) . await . unwrap ( ) ;
790+
791+ let strat = Arc :: new ( BestEffortRetryStrategy :: default ( ) ) ;
792+
793+ let key = generate_key ( ) ;
794+ let value = generate_bytes_value ( 32 ) ;
795+
796+ let upsert_opts = UpsertOptions :: new (
797+ key. as_slice ( ) ,
798+ & scope_name,
799+ & collection_name,
800+ value. as_slice ( ) ,
801+ )
802+ . retry_strategy ( strat) ;
803+
804+ try_until (
805+ Instant :: now ( ) . add ( Duration :: from_secs ( 30 ) ) ,
806+ Duration :: from_millis ( 100 ) ,
807+ "upsert didn't fail with timeout in allowed time" ,
808+ || async {
809+ let upsert_result = timeout_at (
810+ Instant :: now ( ) . add ( Duration :: from_millis ( 2500 ) ) ,
811+ agent. upsert ( upsert_opts. clone ( ) ) ,
812+ )
813+ . await ;
814+
815+ match upsert_result {
816+ Ok ( _) => Ok ( None ) ,
817+ Err ( _e) => Ok ( Some ( ( ) ) ) ,
818+ }
819+ } ,
820+ )
821+ . await ;
822+ } ) ;
823+ }
0 commit comments