Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.71 KB | None | 0 0
  1. {
  2.  
  3. Author: "leshiy1295@yandex.ru",
  4. TestName: "3 nodes - invalid receive counter on destination from another source",
  5. NodeCount: 3,
  6. SendRequests: []lib.SendRequest{
  7. {
  8. Timestamp: 5,
  9. Source: 0,
  10. Destination: 1,
  11. Value: "msg01",
  12. },
  13. {
  14. Timestamp: 0,
  15. Source: 2,
  16. Destination: 1,
  17. Value: "msg21",
  18. },
  19. },
  20. DelayFunc: func(message lib.SentMessage) int {
  21. return message.DeliverTimestamp
  22. },
  23. Validators: []lib.Validator{
  24. {
  25. Timestamp: lib.MaxTimestamp - 1,
  26. Node: 1,
  27. Source: 0,
  28. Validate: func(values []string) bool {
  29. return equal(values, []string{"msg01"})
  30. },
  31. },
  32. },
  33. },
  34. {
  35. Author: "leshiy1295@yandex.ru",
  36. TestName: "2 nodes - crash on no messages at all",
  37. NodeCount: 2,
  38. SendRequests: []lib.SendRequest{},
  39. DelayFunc: func(message lib.SentMessage) int {
  40. return message.DeliverTimestamp
  41. },
  42. Validators: []lib.Validator{
  43. {
  44. Timestamp: lib.MaxTimestamp - 1,
  45. Node: 1,
  46. Source: 0,
  47. Validate: func(values []string) bool {
  48. return equal(values, []string{})
  49. },
  50. },
  51. },
  52. },
  53. {
  54. Author: "leshiy1295@yandex.ru",
  55. TestName: "1 node - message to self",
  56. NodeCount: 2,
  57. SendRequests: []lib.SendRequest{
  58. {
  59. Timestamp: 0,
  60. Source: 0,
  61. Destination: 0,
  62. Value: "msg00",
  63. },
  64. },
  65. DelayFunc: func(message lib.SentMessage) int {
  66. return message.DeliverTimestamp
  67. },
  68. Validators: []lib.Validator{
  69. {
  70. Timestamp: lib.MaxTimestamp - 1,
  71. Node: 0,
  72. Source: 0,
  73. Validate: func(values []string) bool {
  74. return equal(values, []string{"msg00"})
  75. },
  76. },
  77. },
  78. },
  79. {
  80. Author: "leshiy1295@yandex.ru",
  81. TestName: "2 nodes - strange network with reverse order",
  82. NodeCount: 2,
  83. SendRequests: []lib.SendRequest{
  84. {
  85. Timestamp: 0,
  86. Source: 0,
  87. Destination: 1,
  88. Value: "msg1",
  89. },
  90. {
  91. Timestamp: 1,
  92. Source: 0,
  93. Destination: 1,
  94. Value: "msg2",
  95. },
  96. {
  97. Timestamp: 2,
  98. Source: 0,
  99. Destination: 1,
  100. Value: "msg3",
  101. },
  102. {
  103. Timestamp: 3,
  104. Source: 0,
  105. Destination: 1,
  106. Value: "msg4",
  107. },
  108. {
  109. Timestamp: 4,
  110. Source: 0,
  111. Destination: 1,
  112. Value: "msg5",
  113. },
  114. },
  115. DelayFunc: func(message lib.SentMessage) int {
  116. switch message.Message.Value() {
  117. case "msg1":
  118. return 500
  119. case "msg2":
  120. return 400
  121. case "msg3":
  122. return 300
  123. case "msg4":
  124. return 200
  125. case "msg5":
  126. return 100
  127. default:
  128. panic("Unexpected message")
  129. }
  130. },
  131. Validators: []lib.Validator{
  132. {
  133. Timestamp: lib.MaxTimestamp - 1,
  134. Node: 1,
  135. Source: 0,
  136. Validate: func(values []string) bool {
  137. return equal(values, []string{"msg1", "msg2", "msg3", "msg4", "msg5"})
  138. },
  139. },
  140. },
  141. },
  142. {
  143. Author: "leshiy1295@yandex.ru",
  144. TestName: "4 nodes - don't use global counter",
  145. NodeCount: 4,
  146. SendRequests: []lib.SendRequest{
  147. {
  148. Timestamp: 0,
  149. Source: 0,
  150. Destination: 3,
  151. Value: "msg03",
  152. },
  153. {
  154. Timestamp: 1,
  155. Source: 0,
  156. Destination: 3,
  157. Value: "msg03",
  158. },
  159. {
  160. Timestamp: 0,
  161. Source: 2,
  162. Destination: 3,
  163. Value: "msg23",
  164. },
  165. {
  166. Timestamp: 1,
  167. Source: 2,
  168. Destination: 1,
  169. Value: "msg21",
  170. },
  171. {
  172. Timestamp: 2,
  173. Source: 0,
  174. Destination: 1,
  175. Value: "msg01",
  176. },
  177. },
  178. DelayFunc: func(message lib.SentMessage) int {
  179. if message.Message.Value() == "msg03" {
  180. return 10
  181. }
  182. return message.DeliverTimestamp
  183. },
  184. Validators: []lib.Validator{
  185. {
  186. Timestamp: lib.MaxTimestamp - 1,
  187. Node: 1,
  188. Source: 0,
  189. Validate: func(values []string) bool {
  190. return equal(values, []string{"msg01"})
  191. },
  192. },
  193. {
  194. Timestamp: lib.MaxTimestamp - 1,
  195. Node: 3,
  196. Source: 0,
  197. Validate: func(values []string) bool {
  198. return equal(values, []string{"msg03", "msg03"})
  199. },
  200. },
  201. {
  202. Timestamp: lib.MaxTimestamp - 1,
  203. Node: 3,
  204. Source: 2,
  205. Validate: func(values []string) bool {
  206. return equal(values, []string{"msg23"})
  207. },
  208. },
  209. {
  210. Timestamp: lib.MaxTimestamp - 1,
  211. Node: 1,
  212. Source: 2,
  213. Validate: func(values []string) bool {
  214. return equal(values, []string{"msg21"})
  215. },
  216. },
  217. },
  218. },
  219. {
  220. Author: "leshiy1295@yandex.ru",
  221. TestName: "3 nodes - random example",
  222. NodeCount: 3,
  223. SendRequests: []lib.SendRequest{
  224. {
  225. Timestamp: 0,
  226. Source: 0,
  227. Destination: 1,
  228. Value: "msg1",
  229. },
  230. {
  231. Timestamp: 10,
  232. Source: 2,
  233. Destination: 0,
  234. Value: "msg2",
  235. },
  236. {
  237. Timestamp: 15,
  238. Source: 0,
  239. Destination: 2,
  240. Value: "msg3",
  241. },
  242. {
  243. Timestamp: 20,
  244. Source: 0,
  245. Destination: 1,
  246. Value: "msg4",
  247. },
  248. },
  249. DelayFunc: func(message lib.SentMessage) int {
  250. switch message.Message.Value() {
  251. case "msg1":
  252. return 10
  253. case "msg2":
  254. return 25
  255. case "msg3":
  256. return 35
  257. case "msg4":
  258. return 60
  259. default:
  260. panic("Unexpected message")
  261. }
  262. },
  263. Validators: []lib.Validator{
  264. {
  265. Timestamp: 0,
  266. Node: 1,
  267. Source: 0,
  268. Validate: func(values []string) bool {
  269. return equal(values, []string{})
  270. },
  271. },
  272. {
  273. Timestamp: 10,
  274. Node: 1,
  275. Source: 0,
  276. Validate: func(values []string) bool {
  277. return equal(values, []string{"msg1"})
  278. },
  279. },
  280. {
  281. Timestamp: 15,
  282. Node: 1,
  283. Source: 0,
  284. Validate: func(values []string) bool {
  285. return equal(values, []string{"msg1"})
  286. },
  287. },
  288. {
  289. Timestamp: 15,
  290. Node: 0,
  291. Source: 2,
  292. Validate: func(values []string) bool {
  293. return equal(values, []string{})
  294. },
  295. },
  296. {
  297. Timestamp: 20,
  298. Node: 0,
  299. Source: 2,
  300. Validate: func(values []string) bool {
  301. return equal(values, []string{})
  302. },
  303. },
  304. {
  305. Timestamp: 25,
  306. Node: 0,
  307. Source: 2,
  308. Validate: func(values []string) bool {
  309. return equal(values, []string{"msg2"})
  310. },
  311. },
  312. {
  313. Timestamp: 35,
  314. Node: 0,
  315. Source: 2,
  316. Validate: func(values []string) bool {
  317. return equal(values, []string{"msg2"})
  318. },
  319. },
  320. {
  321. Timestamp: 35,
  322. Node: 2,
  323. Source: 0,
  324. Validate: func(values []string) bool {
  325. return equal(values, []string{"msg3"})
  326. },
  327. },
  328. {
  329. Timestamp: 60,
  330. Node: 2,
  331. Source: 0,
  332. Validate: func(values []string) bool {
  333. return equal(values, []string{"msg3"})
  334. },
  335. },
  336. {
  337. Timestamp: 60,
  338. Node: 1,
  339. Source: 0,
  340. Validate: func(values []string) bool {
  341. return equal(values, []string{"msg1", "msg4"})
  342. },
  343. },
  344. },
  345. },
  346. {
  347. Author: "leshiy1295@yandex.ru",
  348. TestName: "3 nodes - chain",
  349. NodeCount: 3,
  350. SendRequests: []lib.SendRequest{
  351. {
  352. Timestamp: 0,
  353. Source: 0,
  354. Destination: 1,
  355. Value: "msg1",
  356. },
  357. {
  358. Timestamp: 10,
  359. Source: 2,
  360. Destination: 0,
  361. Value: "msg2",
  362. },
  363. {
  364. Timestamp: 15,
  365. Source: 0,
  366. Destination: 2,
  367. Value: "msg3",
  368. },
  369. {
  370. Timestamp: 20,
  371. Source: 0,
  372. Destination: 1,
  373. Value: "msg4",
  374. },
  375. },
  376. DelayFunc: func(message lib.SentMessage) int {
  377. switch message.Message.Value() {
  378. case "msg1":
  379. return 10
  380. case "msg2":
  381. return 15
  382. case "msg3":
  383. return 20
  384. case "msg4":
  385. return 40
  386. default:
  387. panic("Unexpected message")
  388. }
  389. },
  390. Validators: []lib.Validator{
  391. {
  392. Timestamp: 0,
  393. Node: 1,
  394. Source: 0,
  395. Validate: func(values []string) bool {
  396. return equal(values, []string{})
  397. },
  398. },
  399. {
  400. Timestamp: 10,
  401. Node: 1,
  402. Source: 0,
  403. Validate: func(values []string) bool {
  404. return equal(values, []string{"msg1"})
  405. },
  406. },
  407. {
  408. Timestamp: 15,
  409. Node: 1,
  410. Source: 0,
  411. Validate: func(values []string) bool {
  412. return equal(values, []string{"msg1"})
  413. },
  414. },
  415. {
  416. Timestamp: 15,
  417. Node: 0,
  418. Source: 2,
  419. Validate: func(values []string) bool {
  420. return equal(values, []string{"msg2"})
  421. },
  422. },
  423. {
  424. Timestamp: 20,
  425. Node: 0,
  426. Source: 2,
  427. Validate: func(values []string) bool {
  428. return equal(values, []string{"msg2"})
  429. },
  430. },
  431. {
  432. Timestamp: 25,
  433. Node: 0,
  434. Source: 2,
  435. Validate: func(values []string) bool {
  436. return equal(values, []string{"msg2"})
  437. },
  438. },
  439. {
  440. Timestamp: 35,
  441. Node: 0,
  442. Source: 2,
  443. Validate: func(values []string) bool {
  444. return equal(values, []string{"msg2"})
  445. },
  446. },
  447. {
  448. Timestamp: 19,
  449. Node: 2,
  450. Source: 0,
  451. Validate: func(values []string) bool {
  452. return equal(values, []string{})
  453. },
  454. },
  455. {
  456. Timestamp: 20,
  457. Node: 2,
  458. Source: 0,
  459. Validate: func(values []string) bool {
  460. return equal(values, []string{"msg3"})
  461. },
  462. },
  463. {
  464. Timestamp: 60,
  465. Node: 2,
  466. Source: 0,
  467. Validate: func(values []string) bool {
  468. return equal(values, []string{"msg3"})
  469. },
  470. },
  471. {
  472. Timestamp: 60,
  473. Node: 1,
  474. Source: 0,
  475. Validate: func(values []string) bool {
  476. return equal(values, []string{"msg1", "msg4"})
  477. },
  478. },
  479. {
  480. Timestamp: 39,
  481. Node: 1,
  482. Source: 0,
  483. Validate: func(values []string) bool {
  484. return equal(values, []string{"msg1"})
  485. },
  486. },
  487. {
  488. Timestamp: 40,
  489. Node: 1,
  490. Source: 0,
  491. Validate: func(values []string) bool {
  492. return equal(values, []string{"msg1", "msg4"})
  493. },
  494. },
  495. },
  496. },
  497. {
  498. Author: "leshiy1295@yandex.ru",
  499. TestName: "3 nodes - lecture clocks",
  500. NodeCount: 3,
  501. SendRequests: []lib.SendRequest{
  502. {
  503. Timestamp: 5,
  504. Source: 0,
  505. Destination: 1,
  506. Value: "msg01",
  507. },
  508. {
  509. Timestamp: 5,
  510. Source: 0,
  511. Destination: 2,
  512. Value: "msg02",
  513. },
  514. {
  515. Timestamp: 10,
  516. Source: 1,
  517. Destination: 0,
  518. Value: "msg10",
  519. },
  520. {
  521. Timestamp: 10,
  522. Source: 1,
  523. Destination: 2,
  524. Value: "msg12",
  525. },
  526. },
  527. DelayFunc: func(message lib.SentMessage) int {
  528. switch message.Message.Value() {
  529. case "msg01":
  530. return 6
  531. case "msg02":
  532. return 30
  533. case "msg10":
  534. return 20
  535. case "msg12":
  536. return 20
  537. default:
  538. panic("Unexpected message")
  539. }
  540. },
  541. Validators: []lib.Validator{
  542. {
  543. Timestamp: 0,
  544. Node: 0,
  545. Source: 0,
  546. Validate: func(values []string) bool {
  547. return equal(values, []string{})
  548. },
  549. },
  550. {
  551. Timestamp: 0,
  552. Node: 0,
  553. Source: 1,
  554. Validate: func(values []string) bool {
  555. return equal(values, []string{})
  556. },
  557. },
  558. {
  559. Timestamp: 0,
  560. Node: 0,
  561. Source: 2,
  562. Validate: func(values []string) bool {
  563. return equal(values, []string{})
  564. },
  565. },
  566. {
  567. Timestamp: 0,
  568. Node: 1,
  569. Source: 0,
  570. Validate: func(values []string) bool {
  571. return equal(values, []string{})
  572. },
  573. },
  574. {
  575. Timestamp: 0,
  576. Node: 1,
  577. Source: 1,
  578. Validate: func(values []string) bool {
  579. return equal(values, []string{})
  580. },
  581. },
  582. {
  583. Timestamp: 0,
  584. Node: 1,
  585. Source: 2,
  586. Validate: func(values []string) bool {
  587. return equal(values, []string{})
  588. },
  589. },
  590. {
  591. Timestamp: 0,
  592. Node: 2,
  593. Source: 0,
  594. Validate: func(values []string) bool {
  595. return equal(values, []string{})
  596. },
  597. },
  598. {
  599. Timestamp: 0,
  600. Node: 2,
  601. Source: 1,
  602. Validate: func(values []string) bool {
  603. return equal(values, []string{})
  604. },
  605. },
  606. {
  607. Timestamp: 0,
  608. Node: 2,
  609. Source: 2,
  610. Validate: func(values []string) bool {
  611. return equal(values, []string{})
  612. },
  613. },
  614. {
  615. Timestamp: 6,
  616. Node: 1,
  617. Source: 0,
  618. Validate: func(values []string) bool {
  619. return equal(values, []string{"msg01"})
  620. },
  621. },
  622. {
  623. Timestamp: 10,
  624. Node: 1,
  625. Source: 0,
  626. Validate: func(values []string) bool {
  627. return equal(values, []string{"msg01"})
  628. },
  629. },
  630. {
  631. Timestamp: 20,
  632. Node: 2,
  633. Source: 0,
  634. Validate: func(values []string) bool {
  635. return equal(values, []string{})
  636. },
  637. },
  638. {
  639. Timestamp: 20,
  640. Node: 2,
  641. Source: 1,
  642. Validate: func(values []string) bool {
  643. return equal(values, []string{"msg12"})
  644. },
  645. },
  646. {
  647. Timestamp: 20,
  648. Node: 0,
  649. Source: 1,
  650. Validate: func(values []string) bool {
  651. return equal(values, []string{"msg10"})
  652. },
  653. },
  654. {
  655. Timestamp: 40,
  656. Node: 2,
  657. Source: 0,
  658. Validate: func(values []string) bool {
  659. return equal(values, []string{"msg02"})
  660. },
  661. },
  662. },
  663. },
  664. {
  665. Author: "leshiy1295@yandex.ru",
  666. TestName: "2 nodes - max plays",
  667. NodeCount: 2,
  668. SendRequests: []lib.SendRequest{
  669. {
  670. Timestamp: 0,
  671. Source: 0,
  672. Destination: 0,
  673. Value: "",
  674. },
  675. {
  676. Timestamp: 1,
  677. Source: 1,
  678. Destination: 0,
  679. Value: "msg10",
  680. },
  681. {
  682. Timestamp: lib.MaxSendTimestamp,
  683. Source: 1,
  684. Destination: 1,
  685. Value: "msg11",
  686. },
  687. {
  688. Timestamp: lib.MaxSendTimestamp,
  689. Source: 0,
  690. Destination: 0,
  691. Value: "msg00",
  692. },
  693. {
  694. Timestamp: lib.MaxSendTimestamp,
  695. Source: 0,
  696. Destination: 1,
  697. Value: "msg01",
  698. },
  699. },
  700. DelayFunc: func(message lib.SentMessage) int {
  701. switch message.Message.Value() {
  702. case "":
  703. return message.SendTimestamp + lib.MaxMessageDelay
  704. case "msg01":
  705. return message.SendTimestamp + lib.MaxMessageDelay
  706. case "msg10":
  707. return message.SendTimestamp + lib.MaxMessageDelay
  708. case "msg11":
  709. return message.SendTimestamp + lib.MaxMessageDelay
  710. case "msg00":
  711. return message.SendTimestamp + lib.MaxMessageDelay - 1
  712. default:
  713. panic("Unexpected message")
  714. }
  715. },
  716. Validators: []lib.Validator{
  717. {
  718. Timestamp: lib.MaxMessageDelay,
  719. Node: 0,
  720. Source: 0,
  721. Validate: func(values []string) bool {
  722. return equal(values, []string{""})
  723. },
  724. },
  725. {
  726. Timestamp: lib.MaxMessageDelay,
  727. Node: 0,
  728. Source: 1,
  729. Validate: func(values []string) bool {
  730. return equal(values, []string{})
  731. },
  732. },
  733. {
  734. Timestamp: 1 + lib.MaxMessageDelay,
  735. Node: 0,
  736. Source: 1,
  737. Validate: func(values []string) bool {
  738. return equal(values, []string{"msg10"})
  739. },
  740. },
  741. {
  742. Timestamp: lib.MaxTimestamp,
  743. Node: 0,
  744. Source: 0,
  745. Validate: func(values []string) bool {
  746. return equal(values, []string{"", "msg00"})
  747. },
  748. },
  749. {
  750. Timestamp: lib.MaxTimestamp,
  751. Node: 0,
  752. Source: 1,
  753. Validate: func(values []string) bool {
  754. return equal(values, []string{"msg10"})
  755. },
  756. },
  757. {
  758. Timestamp: lib.MaxTimestamp,
  759. Node: 1,
  760. Source: 0,
  761. Validate: func(values []string) bool {
  762. return equal(values, []string{"msg01"})
  763. },
  764. },
  765. {
  766. Timestamp: lib.MaxTimestamp,
  767. Node: 1,
  768. Source: 1,
  769. Validate: func(values []string) bool {
  770. return equal(values, []string{"msg11"})
  771. },
  772. },
  773. },
  774. },
  775. {
  776. Author: "leshiy1295@yandex.ru",
  777. TestName: "2 nodes - from different to equal",
  778. NodeCount: 2,
  779. SendRequests: []lib.SendRequest{
  780. {
  781. Timestamp: 0,
  782. Source: 0,
  783. Destination: 1,
  784. Value: "msg1",
  785. },
  786. {
  787. Timestamp: 1,
  788. Source: 0,
  789. Destination: 1,
  790. Value: "msg2",
  791. },
  792. },
  793. DelayFunc: func(message lib.SentMessage) int {
  794. switch message.Message.Value() {
  795. case "msg1":
  796. return 10
  797. case "msg2":
  798. return 10
  799. default:
  800. panic("Unexpected message")
  801. }
  802. },
  803. Validators: []lib.Validator{
  804. {
  805. Timestamp: 9,
  806. Node: 1,
  807. Source: 0,
  808. Validate: func(values []string) bool {
  809. return equal(values, []string{})
  810. },
  811. },
  812. {
  813. Timestamp: 10,
  814. Node: 1,
  815. Source: 0,
  816. Validate: func(values []string) bool {
  817. return equal(values, []string{"msg1", "msg2"})
  818. },
  819. },
  820. },
  821. },
  822. {
  823. Author: "leshiy1295@yandex.ru",
  824. TestName: "3 nodes - incorrect heap attack",
  825. NodeCount: 3,
  826. SendRequests: []lib.SendRequest{
  827. {
  828. Timestamp: 0,
  829. Source: 0,
  830. Destination: 2,
  831. Value: "msg02-1",
  832. },
  833. {
  834. Timestamp: 1,
  835. Source: 0,
  836. Destination: 2,
  837. Value: "msg02-2",
  838. },
  839. {
  840. Timestamp: 0,
  841. Source: 1,
  842. Destination: 2,
  843. Value: "msg12",
  844. },
  845. },
  846. DelayFunc: func(message lib.SentMessage) int {
  847. switch message.Message.Value() {
  848. case "msg02-1":
  849. return 5
  850. case "msg02-2":
  851. return 2
  852. case "msg12":
  853. return 3
  854. default:
  855. panic("Unexpected message")
  856. }
  857. },
  858. Validators: []lib.Validator{
  859. {
  860. Timestamp: 5,
  861. Node: 2,
  862. Source: 1,
  863. Validate: func(values []string) bool {
  864. return equal(values, []string{"msg12"})
  865. },
  866. },
  867. {
  868. Timestamp: 5,
  869. Node: 2,
  870. Source: 0,
  871. Validate: func(values []string) bool {
  872. return equal(values, []string{"msg02-1", "msg02-2"})
  873. },
  874. },
  875. },
  876. },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement