PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/slow/mcrouter/mcrouter-cas.php

http://github.com/facebook/hiphop-php
PHP | 40 lines | 36 code | 4 blank | 0 comment | 4 complexity | a05e6af8cb8b19a2de87be3c2872e174 MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?hh
  2. async function set_get_cas_get_del(MCRouter $mcr, $fail): Awaitable<string> {
  3. $key = 'HPHP_TEST_MCROUTER_CAS|set_get_cas_get_del|'.
  4. ($fail ? 'fail' : 'succeed');
  5. await $mcr->set($key, 'banana');
  6. $record = await $mcr->gets($key);
  7. if (!isset($record['value']) ||
  8. ($record['value'] !== 'banana')) {
  9. return "Failed retrieving initial set value: " . print_r($record, true);
  10. }
  11. $cas = $record['cas'];
  12. if ($fail) ++$cas;
  13. try {
  14. await $mcr->cas($cas, $key, 'orange');
  15. } catch (MCRouterException $e) {
  16. return "Failed: " . $e->getMessage();
  17. }
  18. $val = await $mcr->get($key);
  19. if ($val !== 'orange') {
  20. return "Failed performing CAS for $key => $val";
  21. }
  22. await $mcr->del($key);
  23. return "Success";
  24. }
  25. <<__EntryPoint>> function main(): void {
  26. $servers = Vector { getenv('HPHP_TEST_MCROUTER') };
  27. $mcr = MCRouter::createSimple($servers);
  28. $wh = Vector {
  29. set_get_cas_get_del($mcr, false),
  30. set_get_cas_get_del($mcr, true),
  31. };
  32. $results = HH\Asio\join(HH\Asio\v($wh));
  33. foreach ($results as $result) {
  34. var_dump($result);
  35. }
  36. }