controller_util: Add PackageInfo serialization.

The new parsers.package_info.PackageInfo class needs a translation
function to a PackageInfo message. Just call serialize/deserialize
to simplify naming.

BUG=None
TEST=run_pytest

Change-Id: Ib5619f90590b212d4c7b4f7e7ffbbccfe5cadb33
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2454501
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/controller_util_unittest.py b/api/controller/controller_util_unittest.py
index 7deeeba..7affde7 100644
--- a/api/controller/controller_util_unittest.py
+++ b/api/controller/controller_util_unittest.py
@@ -232,3 +232,21 @@
     cpv = package_info.SplitCPV('', strict=False)
     with self.assertRaises(ValueError):
       controller_util.CPVToString(cpv)
+
+
+def test_serialize_package_info():
+  pkg_info = package_info.parse('foo/bar-1.2.3-r4')
+  pkg_info_msg = common_pb2.PackageInfo()
+  controller_util.serialize_package_info(pkg_info, pkg_info_msg)
+  assert pkg_info_msg.category == 'foo'
+  assert pkg_info_msg.package_name == 'bar'
+  assert pkg_info_msg.version == '1.2.3-r4'
+
+
+def test_deserialize_package_info():
+  pkg_info_msg = common_pb2.PackageInfo()
+  pkg_info_msg.category = 'foo'
+  pkg_info_msg.package_name = 'bar'
+  pkg_info_msg.version = '1.2.3-r4'
+  pkg_info = controller_util.deserialize_package_info(pkg_info_msg)
+  assert pkg_info.cpvr == 'foo/bar-1.2.3-r4'