server-test.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from __future__ import print_function
  2. import sys, cmakelib, json, os, shutil
  3. debug = True
  4. cmakeCommand = sys.argv[1]
  5. testFile = sys.argv[2]
  6. sourceDir = sys.argv[3]
  7. buildDir = sys.argv[4] + "/" + os.path.splitext(os.path.basename(testFile))[0]
  8. cmakeGenerator = sys.argv[5]
  9. print("Server Test:", testFile,
  10. "\n-- SourceDir:", sourceDir,
  11. "\n-- BuildDir:", buildDir,
  12. "\n-- Generator:", cmakeGenerator)
  13. if os.path.exists(buildDir):
  14. shutil.rmtree(buildDir)
  15. cmakelib.filterBase = sourceDir
  16. with open(testFile) as f:
  17. testData = json.loads(f.read())
  18. for communicationMethod in cmakelib.communicationMethods:
  19. proc = cmakelib.initServerProc(cmakeCommand, communicationMethod)
  20. if proc is None:
  21. continue
  22. for obj in testData:
  23. if cmakelib.handleBasicMessage(proc, obj, debug):
  24. pass
  25. elif 'reply' in obj:
  26. data = obj['reply']
  27. if debug: print("Waiting for reply:", json.dumps(data))
  28. originalType = ""
  29. cookie = ""
  30. skipProgress = False;
  31. if 'cookie' in data: cookie = data['cookie']
  32. if 'type' in data: originalType = data['type']
  33. if 'skipProgress' in data: skipProgress = data['skipProgress']
  34. cmakelib.waitForReply(proc, originalType, cookie, skipProgress)
  35. elif 'error' in obj:
  36. data = obj['error']
  37. if debug: print("Waiting for error:", json.dumps(data))
  38. originalType = ""
  39. cookie = ""
  40. message = ""
  41. if 'cookie' in data: cookie = data['cookie']
  42. if 'type' in data: originalType = data['type']
  43. if 'message' in data: message = data['message']
  44. cmakelib.waitForError(proc, originalType, cookie, message)
  45. elif 'progress' in obj:
  46. data = obj['progress']
  47. if debug: print("Waiting for progress:", json.dumps(data))
  48. originalType = ''
  49. cookie = ""
  50. current = 0
  51. message = ""
  52. if 'cookie' in data: cookie = data['cookie']
  53. if 'type' in data: originalType = data['type']
  54. if 'current' in data: current = data['current']
  55. if 'message' in data: message = data['message']
  56. cmakelib.waitForProgress(proc, originalType, cookie, current, message)
  57. elif 'handshake' in obj:
  58. data = obj['handshake']
  59. if debug: print("Doing handshake:", json.dumps(data))
  60. major = -1
  61. minor = -1
  62. generator = cmakeGenerator
  63. extraGenerator = ''
  64. sourceDirectory = sourceDir
  65. buildDirectory = buildDir
  66. if 'major' in data: major = data['major']
  67. if 'minor' in data: minor = data['minor']
  68. if 'buildDirectory' in data: buildDirectory = data['buildDirectory']
  69. if 'sourceDirectory' in data: sourceDirectory = data['sourceDirectory']
  70. if 'generator' in data: generator = data['generator']
  71. if 'extraGenerator' in data: extraGenerator = data['extraGenerator']
  72. if not os.path.isabs(buildDirectory):
  73. buildDirectory = buildDir + "/" + buildDirectory
  74. if sourceDirectory != '' and not os.path.isabs(sourceDirectory):
  75. sourceDirectory = sourceDir + "/" + sourceDirectory
  76. cmakelib.handshake(proc, major, minor, sourceDirectory, buildDirectory,
  77. generator, extraGenerator)
  78. elif 'validateGlobalSettings' in obj:
  79. data = obj['validateGlobalSettings']
  80. if not 'buildDirectory' in data: data['buildDirectory'] = buildDir
  81. if not 'sourceDirectory' in data: data['sourceDirectory'] = sourceDir
  82. if not 'generator' in data: data['generator'] = cmakeGenerator
  83. if not 'extraGenerator' in data: data['extraGenerator'] = ''
  84. cmakelib.validateGlobalSettings(proc, cmakeCommand, data)
  85. elif 'validateCache' in obj:
  86. data = obj['validateCache']
  87. if not 'isEmpty' in data: data['isEmpty'] = false
  88. cmakelib.validateCache(proc, data)
  89. elif 'reconnect' in obj:
  90. cmakelib.exitProc(proc)
  91. proc = cmakelib.initServerProc(cmakeCommand, communicationMethod)
  92. else:
  93. print("Unknown command:", json.dumps(obj))
  94. sys.exit(2)
  95. cmakelib.shutdownProc(proc)
  96. print("Completed")