[Autotest] add support to check pgo-generate build

After a pgo-generate build is installed, lsb-release has version string like
'3837.0.0-pgo-generate', autoupdater needs to be updated to handle version
string in such form.

BUG=chromium:237803
TEST=local unittest, and try lumpy-release-pgo-generate/R28-4082.0.0
DEPLOY=none

Change-Id: I9548c430fa64998fe9965daa707f6a6606f9f783
Reviewed-on: https://gerrit.chromium.org/gerrit/50050
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Dan Shi <dshi@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
diff --git a/client/common_lib/cros/autoupdater.py b/client/common_lib/cros/autoupdater.py
index a191df0..9bce3d3 100644
--- a/client/common_lib/cros/autoupdater.py
+++ b/client/common_lib/cros/autoupdater.py
@@ -385,6 +385,10 @@
         update version: lumpy-chrome-perf/R28-3837.0.0-b2996
         booted version: 3837.0.0
 
+        6. pgo-generate build.
+        update version: lumpy-release-pgo-generate/R28-3837.0.0-b2996
+        booted version: 3837.0.0-pgo-generate
+
         When we are checking if a DUT needs to do a full install, we should NOT
         use this method to check if the DUT is running the same version, since
         it may return false positive for a DUT running trybot paladin build to
@@ -422,12 +426,26 @@
                                         booted_version)
         has_date_string = booted_version != booted_version_no_date
 
+        is_pgo_generate_build = re.match(r'.+-pgo-generate',
+                                           self.update_url)
+
+        # Remove |-pgo-generate| in booted_version
+        booted_version_no_pgo = booted_version.replace('-pgo-generate', '')
+        has_pgo_generate = booted_version != booted_version_no_pgo
+
         if is_trybot_paladin_build:
             if not has_date_string:
                 logging.error('A trybot paladin build is expected. Version ' +
                               '"%s" is not a paladin build.', booted_version)
                 return False
             return stripped_version == booted_version_no_date
+        elif is_pgo_generate_build:
+            if not has_pgo_generate:
+                logging.error('A pgo-generate build is expected. Version ' +
+                              '"%s" is not a pgo-generate build.',
+                              booted_version)
+                return False
+            return stripped_version == booted_version_no_pgo
         else:
             if has_date_string:
                 logging.error('Unexpected date found in a non trybot paladin' +