StreamDepthSnippet.sh #1

  • //
  • cbd/
  • main/
  • test/
  • StreamDepthSnippet.sh
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/p4/common/python/bin/python3

import os
import sys
import re
from P4 import P4, P4Exception

P4PORT = os.getenv ('P4PORT', 'UNDEFINED_P4PORT_VALUE')
P4USER = os.getenv ('P4USER', 'UNDEFINED_P4USER_VALUE')
P4CLIENT = 'DTClient'
P4CONFIG = os.getenv ('P4CONFIG', 'UNDEFINED_P4CONFIG_VALUE')
P4BIN = os.getenv("P4BIN", "p4")

class Main:
   def initP4(self):
      self.p4 = P4()
      self.p4.prog = 'a.py'
      self.p4.version = '1.0'
      self.p4.port = P4PORT
      self.p4.user = P4USER
      self.p4.client = P4CLIENT
      self.p4.ticket_file = os.getenv ('P4TICKETS', '/p4/1/.p4tickets')

      # Ensure this matches the P4Python version used.
      # API Level 79 is for p4d 2015.2.
      self.p4.api_level = 79
      self.stream = None
      self.streamDepot = None
      self.streamDepth = None
      self.streamShortName = None

      try:
         self.p4.connect()

      except P4Exception:
         print ("Unable to connect to Perforce at P4PORT=%s.\n\nThe error from the Perforce server is:" % P4PORT)
         for e in self.p4.errors:
            print (e)
         for w in self.p4.warnings:
            print (w)
         return False

      try:
         print ("Doing 'p4 login -s' login status check.")
         self.p4.run_login('-s')

      except P4Exception:
         userMessage = "Your attempt to submit changelist %s has been rejected because the CBD system user [%s] is not logged into the server [P4PORT=%s].  Please contact your Perforce Administrator for help.\n\nThe error from the Perforce server is:\n" % (self.myOptions.changelist, P4USER, P4PORT)
         print (userMessage)
         for e in self.p4.errors:
            print (e)
         for w in self.p4.warnings:
            print (w)
         return False

      return True

   def run_tests(self):
      print ("==============================================================================")
      for depot in ('pb', 'jam', 'DeepThought'):
         dData = self.p4.fetch_depot(depot)
         self.streamDepot = depot
         # print (dData)

         if (dData['StreamDepth']):
            self.streamDepth=re.sub ('^.*/', '', dData['StreamDepth'])
            self.streamDepth=int(self.streamDepth)
         else:
            self.streamDepth=1

         print ("Depot %s depth is %s.\n" % (self.streamDepot,self.streamDepth))

         if (self.streamDepth > 1):
            file = '//%s/LevelTwo/MAIN/DeepThought.cbdsst' % self.streamDepot
         else:
            file = '//%s/main/%s.cbdsst' % (self.streamDepot, self.streamDepot)

         print ("Looking at file: %s" % file)

         pathElements = file.split('/')
         #print ("PE=%s" % pathElements)
         self.streamShortName = pathElements[self.streamDepth+2]
         self.stream = '//%s/%s' % (self.streamDepot, pathElements[3])
         i = 1
         while (i < self.streamDepth):
            #print ("I=%s. Before: %s" % (i, self.stream))
            self.stream = "%s/%s" % (self.stream, pathElements[i+3])
            #print ("I=%s. After: %s" % (i, self.stream))
            i =i +1

         print ("D=[%s] SN=[%s] S=[%s]" % (self.streamDepot, self.streamShortName, self.stream))
         print ("------------------------------------------------------------------------------")

      return True

if __name__ == '__main__':
   """ Main Program
   """
   main = Main(*sys.argv[1:])

   if (not Main.initP4(main)):
      sys.exit (1)

   print ("Ready.")

   if (Main.run_tests(main)):
      sys.exit (0)
   else:
      sys.exit (1)

# Change User Description Committed
#1 21633 C. Thomas Tyler Populate -o //guest/perforce_software/cbd/main/...
//cbd/main/....
//guest/perforce_software/cbd/main/test/StreamDepthSnippet.sh
#1 19351 C. Thomas Tyler Released CBD/MultiArch/2016.2/19348 (2016/05/10).
Copy Up using 'p4 copy -r -b perforce_software-cbd-dev'.
//guest/perforce_software/cbd/dev/test/StreamDepthSnippet.sh
#1 19337 C. Thomas Tyler Added support for StreamDepth > 1.

Enhanced test cases for StreamDepth > 1.