#
# This file defines the tests for multiple initialization of NSS in
#  different libraries.
#
# Test description lines control the parameters for the multinit test program.
#
# Init order: Upper case/digits indicate an init call, lower case indicate
# a shutdown call.
# 	M,m-Main 1,i-lib1, 2,z-lib2
# Main calls the traditional NSS init calls (simulating the main application)
# lib1 and lib2 call NSS_InitContext().
#
# All functions call NSS_ShutdownContext unless 'main shutdown type' is set to 
# 'old', in which case main will call the traditional NSS_Shutdown().
#
# Commands: comma separated list of commands to execute. These simulate
#  executing commands from either a library or main. In each cycle, multinit
#  will do one initialize or shutdown, then execute all the commands
#  for any of the libraries or main that is currently initialized. The same
#  command is executed in each cycle that it's library is initialized.
#
#  Commands are given in order or 'main','lib1','lib2'. Valid commands are:
#    none - don't execute any commands for this library (or main).
#    list_certs - list all the visible certs in the system.
#    list_slots - list all the slots in the system.
#    key_slot - list the current default key slot.
#
# Main Shutdown Type - which kind of shutdown does main call. See Init order.
#
# Directories - which directory should each init open. Listed in order of:
#   (main init directory),(lib1 init directory),(lib2 init directory).
#
# RO - Which databases to open up read only, valid values are:
#   all - main, lib1, and lib2
#   none - open all directories R/W
#   libs - lib1 & lib2
#   main, lib1, lib2 - their respective directories only.
#
# Test description lines are followed by their expected summary output.
# output lines are of the form:
#
# tag expected output.
#
# where tag is one of
# all - applies to all database types
# sql - expected output for sql databases
# dbm - expected output for dbm databases
#
# if you do not specify all, you must have one line each for sql and dbm
#
#                                  main
#  init       main,lib1,lib2   shutdown  main,lib1,lib2      Test Case name
#  order         commands          type  directories    RO
# ------ ------------------------  ---  -----------   ----- --------------
  1M2zmi list_slots,list_certs,none new dir1,dir2,dir3  all  Progressive init
all 1C<Bob>uuuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCCMS<NSS Generic Crypto Services>ttS<Main>ttS<Lib1>ttC<Alice>uuuC<Bob>pupupuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCC2S<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>ttS<Lib1>ttC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCZS<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>ttS<Lib1>ttC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCNC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCI
  1M2zmi list_certs,none,none       old dir1,dir2,dir3  all  Progressive init - oldStyle
all 1MC<Alice>uuuC<Bob>pupupuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCC2C<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCZC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCNIE0xffffe09a
  12Mizm none,list_certs,none       new dir1,dir2,dir3  all  Sequenced init
all 1C<Bob>uuuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCC2C<Bob>uuuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCMC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCIZN
  12Mizm none,list_certs,none       old dir1,dir2,dir3  all  Sequenced init - old Style
all 1C<Bob>uuuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCC2C<Bob>uuuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCMC<Alice>uuuC<Bob>pupupuC<Dave>pupupuC<Eve>pppC<NSS Test CA>CTCCIZN
  1Mi2mz none,list_certs,list_slots new dir1,dir2,dir3  all  Overlap shutdown
all 1C<Bob>uuuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCCMC<Alice>uuuC<Bob>pupupuC<Dave>pppC<Eve>pppC<NSS Test CA>CTCCI2S<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>ttS<Lib1>ttNS<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>ttS<Lib1>ttZ
  1Mi2mz none,key_slot,none         new dir1,dir2,dir3  all  Keyslot test
all 1S<Lib1>ttMS<Main>ttI2NZ
  M12miz none,key_slot,none         new dir1,dir2,dir3  all  Main init first
all M1S<Main>tt2S<Main>ttNS<Main>ttIZ
  M12miz key_slot,none,none         old dir1,dir2,dir3  all  Main init first - old Style
all MS<Main>tt1S<Main>tt2S<Main>ttNIE0xffffe09aZE0xffffe09a
  M12miz list_slots,none,none       new dir1,dir1,dir2  all  Loading the same directory twice
all MS<NSS Generic Crypto Services>ttS<Main>tt1S<NSS Generic Crypto Services>ttS<Main>tt2S<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>ttNIZ
  M12miz list_slots,none,none       new dir1,dir1,dir2  libs  Loading the same directory twice - r/w then ro
all MS<NSS Generic Crypto Services>ttS<Main>tf1S<NSS Generic Crypto Services>ttS<Main>tf2S<NSS Generic Crypto Services>ttS<Lib2>ttS<Main>tfNIZ
  M12miz list_slots,none,none       new dir1,dir1,dir2  main  Loading the same directory twice - ro then r/w
sql MS<NSS Generic Crypto Services>ttS<Main>tt1S<NSS Generic Crypto Services>ttS<Lib1>tfS<Main>tt2S<NSS Generic Crypto Services>ttS<Lib2>tfS<Lib1>tfS<Main>ttNIZ
dbm MS<NSS Generic Crypto Services>ttS<Main>tt1S<NSS Generic Crypto Services>ttS<Main>tt2S<NSS Generic Crypto Services>ttS<Lib2>tfS<Main>ttNIZ
 M12miM1zim key_slot,none,none       old dir1,dir2,dir3  all  Properly detect shutdown of a closed handle
all MS<Main>tt1S<Main>tt2S<Main>ttNIE0xffffe09aMS<Main>tt1S<Main>ttZE0xffffe09aS<Main>ttIS<Main>ttN
